Está en la página 1de 456

AS/400

COBOL/400 Gua del usuario


Versin 3 Release 1.0

SC10-9424-00

IBM

AS/400
COBOL/400 Gua del usuario
Versin 3 Release 1.0

SC10-9424-00

Nota!
Antes de utilizar esta informacin y el producto al que le da soporte, asegrese de leer la informacin general que
aparece en el apartado Avisos en la pgina ix.

Primera Edicin (septiembre 1994)


Esta publicacin es la traduccin del original en ingls COBOL/400 User's Guide, SC09-1812-00.
Esta edicin se aplica al programa bajo licencia IBM ILE* COBOL/400* (Programa 5763-CB1), Versin 3 Release 1 Modificacin 0, y
a todas los releases posteriores y modificaciones hasta que se indique lo contrario en nuevas ediciones. Asegrese de que est
utilizando la edicin adecuada para el nivel del producto.
Solicite sus publicaciones a travs de su representante o sucursal IBM de su localidad. En la direccin que figura a continuacin no
se pueden adquirir publicaciones.
Al final de esta publicacin se incluye un impreso para los comentarios del lector. Si falta dicho impreso puede enviar sus comentarios a:
IBM, S.A.
Centro de Traduccin y Publicaciones
Avda. Diagonal, 571
08029 Barcelona
Espaa
Tambin puede enviar sus comentarios por fax:
Desde Espaa:
(93) 209 11 16
Desde otros pases: 34 3 209 11 16
Si tiene acceso a Internet, puede enviar sus comentarios por correo electrnico a pubas400@vnet.ibm.com.
Al enviar informacin a IBM se cede a dicha firma el derecho no exclusivo de utilizar o distribuir dicha informacin de la manera que
crea ms conveniente, sin incurrir por ello en ninguna obligacin hacia el lector.
Copyright International Business Machines Corporation 1994. Reservados todos los derechos.

Contenido
Avisos . . . . . . . . . . . . . . . . . . . . . . . . .
Informacin acerca de la Interfaz de Programacin
Marcas Registradas y Marcas de Servicio . . . .

. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .

Acerca de este manual


. . . . . . . . . . . . . . . . . . . . . .
A Quin Va Dirigido Este Manual
. . . . . . . . . . . . . . . . .
Estndares Industriales Utilizados en el Diseo del Compilador

. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . .

Captulo 1. Introduccin al Lenguaje de Programacin COBOL/400


Extensiones al Estndar ANSI . . . . . . . . . . . . . . . . . . . . . . . .
Caractersticas del Compilador COBOL/400 . . . . . . . . . . . . . . . .
Utilizacin de la Notacin de Sintaxis COBOL/400
. . . . . . . . . . . .
Lectura de los Diagramas de Sintaxis . . . . . . . . . . . . . . . . . . . .
Lectura de las Ampliaciones IBM
. . . . . . . . . . . . . . . . . . . . . .
Cdigos de Entrada del Lenguaje de Control . . . . . . . . . . . . . . . .
Visin General de la Programacin en COBOL/400 . . . . . . . . . . . .
Captulo 2. Instalacin del Programa Fuente en el Sistema AS/400
Diseo del Programa COBOL/400 . . . . . . . . . . . . . . . . . . . . .
Instalacin del Fuente Mediante el SEU
. . . . . . . . . . . . . . . . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

xi
xi
xiii
1
1
2
2
3
5
5
6

. . . . .

9
9
11

Captulo 3. Compilacin de un Programa COBOL/400 . . . . . . . . . . . .


Utilizacin del Mandato Crear Programa COBOL (CRTCBLPGM) . . . . . . . .
. . . . . . . . . . . .
Utilizacin de las Pantallas de Solicitud CRTCBLPGM
Entrada del Mandato CRTCBLPGM desde la Lnea de Mandatos . . . . . .
Entrada del Mandato CRTCBLPGM desde un Programa CL . . . . . . . . .
Sintaxis del Mandato CRTCBLPGM . . . . . . . . . . . . . . . . . . . . . . .
Compilacin del Programa Fuente para el Release Anterior . . . . . . . . . . .
Uso de la Instruccin PROCESS para Especificar las Opciones del Compilador
Explicacin de la Salida del Compilador
. . . . . . . . . . . . . . . . . . . . . .
Especificacin del Formato del Listado . . . . . . . . . . . . . . . . . . . . . .
Visualizacin del Listado del Compilador Utilizando el SEU . . . . . . . . . .
Programa y Listado Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15
15
16
29
29
30
32
33
38
39
40
40

Captulo 4. Ejecucin del Programa en COBOL . . . . . . .


Respuesta a Mensajes de Consulta en Tiempo de Ejecucin

53
54

. . . . .
. . . . . .

. . . . . . . . .
. . . . . . . .

Captulo 5. Depuracin del Programa . . . . . . . . . . . . . . . . . .


Cmo Evitar Errores de Cdigos Comunes . . . . . . . . . . . . . . . . .
Utilizacin de Puntos de Interrupcin . . . . . . . . . . . . . . . . . . . .
Ejemplo de un Programa que Utiliza Puntos de Interrupcin . . . . .
Cambio de Variables de Programa . . . . . . . . . . . . . . . . . . . .
Consideraciones para la Utilizacin de Puntos de Interrupcin . . . .
Utilizacin de un Rastreo . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de Utilizacin de un Rastreo
. . . . . . . . . . . . . . . . . .
Consideraciones para la Utilizacin de un Rastreo . . . . . . . . . . .
Utilizacin de un Conmutador para Depuracin en Tiempo de Ejecucin
Utilizacin de un Vuelco con Formato COBOL . . . . . . . . . . . . . . .
Captulo 6. Manejo de Errores y Excepciones COBOL/400
Copyright IBM Corp. 1994

. . . .
. . . . .

ix
ix
x

. . . .

57
58
59
60
65
65
66
66
68
69
69

. . . . . . . . .

71

. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . .

iii

Manejo de Errores Estndar . . . . . . . . . . . . . . . . . . . . . . . . .


Visin General del Manejo de Errores . . . . . . . . . . . . . . . . . .
Utilizacin de las Interfaces del Programa de Aplicacin (API) para el
Manejo de Errores
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estado de archivo Interno y Externo . . . . . . . . . . . . . . . . . . .
Deteccin de Errores Generales
. . . . . . . . . . . . . . . . . . . . .
Estado del Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generacin del Supervisor de Mensajes . . . . . . . . . . . . . . . . .
Finalizacin de un Programa COBOL . . . . . . . . . . . . . . . . . .
Cdigos de Retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelos Estndar y no Estndar de Manejo de Errores . . . . . . . .
Efectos de *STDERR y *NOSTDERR en el Estado de Archivos . . .
Proceso de Verbos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . .
Excepciones Comunes y Algunas de sus Causas . . . . . . . . . . . . .
Recuperacin de una Anomala . . . . . . . . . . . . . . . . . . . . . . .
Captulo 7. Gestin de Archivos y Datos . . . . . . . . . . . . . . . .
Dependencia e Independencia de Dispositivo . . . . . . . . . . . . . . .
Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spool de Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spool de Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones acerca de la Alteracin Temporal del Sistema . . . . .
Bloqueo de Archivos y Registros por COBOL . . . . . . . . . . . . . . .
Bloqueo y Liberacin de Registros . . . . . . . . . . . . . . . . . . . .
Posibilidad de Compartir una Va de Datos Abierta
. . . . . . . . . .
Consideraciones sobre Control de Compromiso . . . . . . . . . . . . . .
Desbloqueo de Registros de Entrada y Bloqueo de Registros de Salida
Estado de Archivos y reas de Realimentacin . . . . . . . . . . . . . .
Descripciones de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . .
Archivos Descritos por Programa
. . . . . . . . . . . . . . . . . . . . . .
Archivos Descritos Externamente
. . . . . . . . . . . . . . . . . . . . . .
Especificaciones de Descripcin de Datos (DDS)
. . . . . . . . . . .
. .
Instruccin COPY de Formato 2 (Opcin DD, DDR, DDS o DDSR)
Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estructuras de Datos Generadas . . . . . . . . . . . . . . . . . . . . .
Ejemplos de Generacin de Claves
. . . . . . . . . . . . . . . . . . .
Declaracin de tems de Datos utilizando Tipos de Datos de CVTOPT
Campos Grficos DBCS . . . . . . . . . . . . . . . . . . . . . . . . . .
Campos Grficos DBCS de Longitud Variable . . . . . . . . . . . . .
Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones acerca de los Datos de Sistemas Cruzados . . . . . .

iv

. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .

71
71
72
73
75
75
76
78
79
79
83
84
85
86

. . .

93
93
95
95
96
97
97
98
99
99
107
108
109
110
110
112
118
121
121
127
137
139
140
141
143

Captulo 8. Archivos Transaction . . . . . . . . . . . . . . . . . . . . . . . .


Archivos Transaction Descritos por Programa . . . . . . . . . . . . . . . . . .
Archivos Transaction Descritos Externamente . . . . . . . . . . . . . . . . . .
La instruccin COPY con el Formato 2
. . . . . . . . . . . . . . . . . . . .
Especificaciones de Descripcin de Datos (Data Description Specifications)
Proceso de un Archivo Transaction Descrito Externamente . . . . . . . . .
Utilizacin de Indicadores con Archivos Transaction
. . . . . . . . . . . . . .
Indicadores en un rea de Indicadores Separada . . . . . . . . . . . . . .
Indicadores en el rea de Registro . . . . . . . . . . . . . . . . . . . . . . .
Clusula ASSIGN y Atributo de rea de Indicadores Separada . . . . . .
Entrada de Descripcin de DatosDatos Booleanos . . . . . . . . . . . . .
Frase INDICATORS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

145
145
145
145
146
149
149
150
150
150
151
152

COBOL/400 Gua del usuario

. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .

Indicadores en un rea de Indicadores Separada . . . . . . . . .


Indicadores en el rea de Registro . . . . . . . . . . . . . . . . . .
Programas Ejemplo con Indicadores . . . . . . . . . . . . . . . . .
Subarchivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilizacin de Subarchivos . . . . . . . . . . . . . . . . . . . . . . .
Archivos de Mltiples Dispositivos y Archivos de Dispositivo nico
Divisin de Entorno
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entrada de Control de Archivo
. . . . . . . . . . . . . . . . . . . .
Divisin de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entrada de Descripcin de Archivos . . . . . . . . . . . . . . . . .
tems de Datos Booleanos . . . . . . . . . . . . . . . . . . . . . . .
Divisin de Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . .
Conceptos de Divisin de Procedimiento
. . . . . . . . . . . . . .
Instruccin ACCEPT . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin ACQUIRE . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin DROP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recursos Comunes de Proceso . . . . . . . . . . . . . . . . . . . .
Instruccin READ . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin REWRITE . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin WRITE
. . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruccin USE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programas Ejemplo de Estacin de Trabajo . . . . . . . . . . . . . .
Programa Bsico de Consulta . . . . . . . . . . . . . . . . . . . . .
. .
Programas de Consulta de Pedidos que utilizan Subarchivos
Un Programa de Actualizacin de Pagos . . . . . . . . . . . . . .
Captulo 9. Archivos de Impresora . . . . . . . .
Prrafo SPECIAL-NAMES y Frase ADVANCING
Clusula LINAGE . . . . . . . . . . . . . . . . . .
Archivos FORMATFILE . . . . . . . . . . . . . . . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .
Captulo 10. Archivos DISK y DATABASE
Archivos DATABASE frente a Archivo DISK . . . . . . . . . . . . . . . . .
Mtodos de Proceso para Archivos DISK y DATABASE
. . . . . . . . .
Archivos Indexados COBOL . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencia a una Clave Parcial . . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones Sobre Archivos Lgicos . . . . . . . . . . . . . . . . . .
Archivos Relativos COBOL
. . . . . . . . . . . . . . . . . . . . . . . . . .
Archivos Secuenciales COBOL . . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones sobre la Organizacin de Archivos COBOL y la Va de
. . . . . . . . . . . . . . . . . . . . . . . . .
Acceso del Archivo AS/400
Mtodos de Proceso de Archivos
. . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones sobre el Archivo Descendente . . . . . . . . . . . . . . . .

Captulo 11. Consideraciones de Programacin en COBOL/400


Emisin de un Mandato CL desde un Programa COBOL . . . . . .
Utilizacin de la Frase CORRESPONDING . . . . . . . . . . . . . .
Clusula LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modificacin de Referencias . . . . . . . . . . . . . . . . . . . . . .
Modificacin de Referencias con Tablas de Longitud Variable .
Modificacin de Referencias Utilizando los Nombres de Datos .
Modificacin de Referencias con Subndices . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

. . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

Contenido

153
153
154
164
166
170
180
180
184
184
185
185
185
186
187
188
189
189
190
192
201
203
209
210
210
216
227
243
243
243
244
251
251
251
251
253
257
260
261
262
262
265
267
267
268
270
274
275
276
277

Deseditar
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplos de Deseditar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Manejo de Errores de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consideraciones acerca del Rendimiento . . . . . . . . . . . . . . . . . . . . .
Clusulas PICTURE para tems Numricos . . . . . . . . . . . . . . . . . .
tems Binarios de Ocho Bytes . . . . . . . . . . . . . . . . . . . . . . . . . .
Segmentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Llamadas a un Programa COBOL desde un Programa que no es COBOL
Depuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opcin *NORANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opcin *DUPKEYCHK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Archivos Relativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control de Compromiso
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lectura sin Bloqueos de Registros . . . . . . . . . . . . . . . . . . . . . . .
Inicializacin de Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloqueo de Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bucles en un Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rastreo de un Bucle en un Programa . . . . . . . . . . . . . . . . . . . . .
Errores que Pueden Causar un Bucle . . . . . . . . . . . . . . . . . . . . .

277
278
279
280
280
281
281
281
282
282
282
282
282
283
283
283
283
283
284
284

Captulo 12. Comunicaciones entre Programas . . . . . . . . . . . . .


Transferencia de Control a Otro Programa . . . . . . . . . . . . . . . . . .
Programas Principales y Subprogramas . . . . . . . . . . . . . . . . . .
Devolucin de Control desde un Programa Llamado . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
Inicializacin de Almacenamiento
Llamada a Otro Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paso de Datos Utilizando BY REFERENCE o BY CONTENT
. . . . .
En la Seccin de Enlace . . . . . . . . . . . . . . . . . . . . . . . . . . .
Agrupacin de Datos a Pasar . . . . . . . . . . . . . . . . . . . . . . . .
Llamada por Identificador . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilizacin de Punteros en un Programa COBOL/400 . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Definicin y Alineacin de Punteros
. . . . . . . . . . . . . . . . .
Los Punteros y la Clusula REDEFINES
Lectura y Grabacin de Punteros
. . . . . . . . . . . . . . . . . . . . . . .
Inicializacin de Punteros Utilizando la Constante Figurativa NULL . . . .
Longitud (LENGTH OF) de Registro Especial . . . . . . . . . . . . . . . .
Configuracin de la Direccin de tems de Enlace . . . . . . . . . . . . . .
Utilizacin de ADDRESS OF y de ADDRESS OF del Registro Especial
Utilizacin de Punteros en una Instruccin MOVE . . . . . . . . . . . . . .
Utilizacin de Punteros en una Instruccin CALL . . . . . . . . . . . . . .
Utilizacin de Punteros y API para Acceder a Espacios de Usuario
. . .
Proceso de una Lista Encadenada . . . . . . . . . . . . . . . . . . . . . . .
reas de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rea de Datos Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rea de Datos PIP (Parmetros de Inicializacin de Programas)
. . .
Consideraciones de Archivo
. . . . . . . . . . . . . . . . . . . . . . . . . .

285
285
286
286
291
291
291
293
293
294
295
296
297
298
299
299
300
300
301
303
305
316
319
319
320
321

Apndice A. Caractersticas de segmentacin . . .


Conceptos referentes a la segmentacin . . . . . . . .
Segmentos de Programa . . . . . . . . . . . . . . . .
Lgica de segmentacin . . . . . . . . . . . . . . . .
Control de Segmentacin
. . . . . . . . . . . . . . .
Consideraciones sobre el Programa Fuente COBOL

vi

COBOL/400 Gua del usuario

. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
. .
. .
. .
. .
. .
. .
. .
. .

. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .

323
323
323
324
325
325

SegmentacinConsideraciones Especiales

. . . . . . . . . . . . . . . . . .

Apndice B. Caractersticas de Depuracin .


Depuracin del Lenguaje Fuente COBOL . . . . .
Conmutador de Tiempo de Compilacin . . . .
Conmutador en Tiempo de Ejecucin . . . . .
Sentencia Declarativa USE FOR DEBUGGING
Registro Especial DEBUG-ITEM
. . . . . . . .
Lneas de depuracin . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .

Apndice C. Nivel de Soporte del Lenguaje . . . . . . . .


Estndar ANSI X3.23-1985 COBOL . . . . . . . . . . . . .
Nivel de Soporte del Lenguaje COBOL/400 . . . . . . . . .
Soporte SAA de la Interfaz de Programacin Comn (CPI)

. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .

Apndice D. Mensajes COBOL/400, Sealizador FIPS y Sealizacin


SAA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mensajes COBOL/400 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mensajes Interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mensajes de Compilacin . . . . . . . . . . . . . . . . . . . . . . . . . .
Respuestas a Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripciones de Mensajes COBOL . . . . . . . . . . . . . . . . . . . . . .
El sealizador Federal Information Processing Standard (FIPS) . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sealizacin SAA

. .
. .
. .
. .
. .
. .
. .
. .

Apndice E. Diferencias entre el COBOL ANSI 74 COBOL y el COBOL


ANSI 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Migracin de Programas COBOL ANSI 74 a COBOL ANSI 85 . . . . . . .
Apndice F. Soporte del Juego de Caracteres de Idiomas
Internacionales de Doble Byte . . . . . . . . . . . . . . . .
Utilizacin de Caracteres DBCS en Literales . . . . . . . .
. . . . . . . . . . . . . . . . . .
Divisin de Identificaciones
Divisin de Entornos . . . . . . . . . . . . . . . . . . . . . .
Divisin de Datos . . . . . . . . . . . . . . . . . . . . . . . .
Divisin de Procedimientos
. . . . . . . . . . . . . . . . . .
SORT/MERGE . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones Dirigidas al Compilador
. . . . . . . . . . . .
Comunicaciones entre programas
. . . . . . . . . . . . . .
Distintivo FIPS . . . . . . . . . . . . . . . . . . . . . . . . . .
Listados de Programa COBOL . . . . . . . . . . . . . . . .

. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .

329
329
329
330
332
335
337
339
339
340
341

343
343
343
345
345
346
347
349

351
351

355
355
359
359
360
361
367
368
368
369
369

. . . . . . . . . .

371
371
373
376
378
382
384
386
389

. . . . . . . . . . .

393

Apndice G. Ejemplos de Procesos de Archivos AS/400


Creacin de Archivos Secuenciales
. . . . . . . . . . . .
Actualizacin y Ampliacin de Archivos Secuenciales . .
Creacin de Archivos Indexados . . . . . . . . . . . . . .
Actualizacin de Archivos Indexados . . . . . . . . . . . .
Creacin de Archivo Relativos . . . . . . . . . . . . . . . .
Actualizacin de Archivos Relativos
. . . . . . . . . . . .
Recuperacin de Archivos Relativos . . . . . . . . . . . .
Archivos de Fusin y Clasificacin . . . . . . . . . . . . .
Apndice H. Ejemplo de Vuelco con Formato COBOL

326

. . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .

Contenido

vii

Bibliografa

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Glosario de Abreviaturas
ndice

viii

COBOL/400 Gua del usuario

405

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

407

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

411

Avisos

|
|

Las referencias hechas en esta publicacin a productos, programas o servicios IBM


no implican que IBM tenga la intencin de hacerlos disponibles en todos los pases
en los que opera. Cualquier referencia a un programa bajo licencia IBM en esta
publicacin no implica ni establece que slo puedan utilizarse programas bajo
licencia IBM. Cualquier producto, programa o servicio funcionalmente equivalente
que no vulnere ninguno de los derechos de la propiedad intelectual de IBM puede
ser utilizado en lugar de dicho producto, programa o servicio IBM. La evaluacin y
la verificacin de la operativa conjunta con otros productos, a excepcin de aqullos expresamente designados por IBM, es responsabilidad del usuario.

|
|

IBM puede tener patentes o solicitudes de patentes pendientes que cubren el tema
tratado en este documento. El hecho de que est en posesin 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
Los cambios relevantes o las actualizaciones en el texto vienen indicadas mediante
una lnea horizontal (|) a la izquierda del cambio o adicin en cuestin.
Esta publicacin contiene ejemplos de datos e informes utilizados en operaciones
de gestin ordinarias. Para ilustrarlos de la forma ms completa posible, los ejemplos incluyen nombres de personas, empresas, marcas y productos. Todos estos
nombres son ficticios y cualquier parecido con los nombres y direcciones que
utilice una empresa de gestin real es pura coincidencia.

Informacin acerca de la Interfaz de Programacin


La presente publicacin tiene la intencin de proporcionar ayuda al cliente para
escribir programas COBOL/400.
En esta publicacin tambin aparece informacin de asesoramiento asociado y de
la interfaz de programacin de uso general.
Las interfaces de programacin de uso general permiten que el cliente escriba programas que reciban servicios del compilador COBOL/400.
La informacin de la interfaz de programacin de uso general y el asesoramiento
asociado se identifica de manera explcita all donde se produce, ya sea mediante
una instruccin introductoria a un captulo o seccin, o bien mediante el enmarcado
siguiente:
Interfaz de Programacin de Uso General
Informacin de asesoramiento asociado y de la interfaz de programacin de uso
general...
Fin de Interfaz de Programacin de Uso General

Copyright IBM Corp. 1994

ix

Marcas Registradas y Marcas de Servicio


Los trminos siguientes, marcados con un asterisco (*) en esta publicacin, son
marcas registradas de IBM Corporation en los Estados Unidos y/o en el resto de
los pases:

Application System/400

AS/400

CICS/400

COBOL/400

IBM

ILE

Operating System/2

Operating System/400

OS/2

OS/400

RPG/400

SAA

SQL/400

System/370

Systems Application
Architecture

400

COBOL/400 Gua del usuario

Acerca de este manual


Este manual proporciona toda la informacin que un programador necesita para
escribir, compilar, comprobar, depurar y ejecutar programas COBOL/400* en el
sistema Application System/400* (AS/400*) IBM*.
Este manual hace referencia a otras publicaciones IBM. Estas publicaciones se
listan en el apartado Bibliografa en la pgina 405 con el ttulo completo y el
nmero de orden de base. Cuando se hace referencia a ellas en el texto, se utiliza
una versin abreviada del ttulo.

A Quin Va Dirigido Este Manual


Este manual se ha concebido para programadores que tienen algunos conocimientos sobre el lenguaje de programacin COBOL y para los operadores que
ejecutan los programas. Es una gua completa que ensea a los usuarios del
sistema AS/400 el lenguaje COBOL/400. El usuario debe tener un conocimiento
base sobre los conceptos referentes al proceso de datos, sobre el lenguaje de programacin COBOL y sobre el Operating System/400* (OS/400*) de IBM.
Cuando utilice este manual, el usuario podr:

Disear programas COBOL/400


Codificar programas COBOL/400
Introducir, compilar y ejecutar programas COBOL/400
Comprobar y depurar programas COBOL/400
Estudiar ejemplos codificados COBOL/400.

Nota: Es preciso efectuar una lectura profunda de los cuatro primeros captulos
antes de proceder a la lectura del resto del manual.
Utilice este manual junto con la publicacin COBOL/400 Reference, SC09-1813,
que describe cada componente y caracterstica del lenguaje COBOL/400. La publicacin COBOL/400 Users Guide, SC09-1812 y el manual COBOL/400 Reference
describen pormenorizadamente el lenguaje y el compilador COBOL/400.
Para obtener informacin sobre toda la biblioteca de documentos AS/400, consulte
el manual Gua de Publicaciones, GC10-9237 (GC41-9678), que contiene una descripcin resumida del contenido de cada publicacin AS/400.
Antes de proceder a la lectura de este manual, es preciso que se familiarice con la
siguiente informacin:
El uso de los controles e indicadores de la pantalla de visualizacin, as como
la utilizacin de todas las teclas del teclado, como por ejemplo:

Teclas
Teclas
Teclas
Teclas
Teclas

de
de
de
de
de

movimiento del cursor


funcin
salida de campo
Insercin y Supresin
Restauracin de errores.

Para obtener informacin acerca de la estacin de pantalla, consulte:


Gua para Nuevos Usuarios, SC10-8881 (SC41-8211).

Copyright IBM Corp. 1994

xi

El funcionamiento de la estacin de pantalla si est enlazada con el sistema


AS/400 de IBM, as como la ejecucin del software AS/400. Ello implica tener
conocimientos sobre el uso del sistema operativo OS/400 y sobre el Lenguaje
de Control (CL) para poder llevar a cabo las siguientes operaciones:

Iniciar y finalizar la sesin en la estacin de pantalla


Interactuar con pantallas
Utilizar la Ayuda
Introducir mandatos CL
Utilizar las Herramientas para el Desarrollo de Aplicaciones
Responder a mensajes
Realizar gestin de archivos.

La publicacin Programacin: Lenguaje de Control Gua del Programador,


SC10-8977 (SC41-8077), que contiene los conceptos fundamentales de las
funciones CL de OS/400.
Para ampliar el conocimiento sobre el sistema operativo y el lenguaje de
control, consulte las siguientes publicaciones IBM:
Programming: Control Language Reference, SC41-0030 (manual en tres
tomos).
Programacin: Gua para la Gestin de Trabajos, SC10-8978 (SC41-8078)
Advanced Backup and Recovery Guide, SC41-8079
La publicacin Gua para la Gestin de Datos, SC10-9008 (SC41-9658), que
proporciona informacin acerca de la utilizacin del soporte de gestin de
datos que permite que una aplicacin trabaje con archivos.
Adems, el manual incluye informacin sobre:
La estructura y los conceptos fundamentales del soporte de gestin de
datos en el sistema
El soporte de gestin de datos para estaciones de pantalla, impresoras,
cintas y disquetes, as como soporte de spool
La redireccin de alteraciones temporales de archivos (eventualmente realizando cambios en los archivos cuando se ejecuta una aplicacin)
La copia de archivos mediante mandatos del sistema para copiar datos de
un lugar a otro
La adaptacin de un sistema utilizando datos de doble byte.
El uso de las siguientes Herramientas para el Desarrollo de Aplicaciones:
El Programa de Utilidad para la Ayuda del Diseo de Pantallas (SDA), que
se utiliza para disear y codificar pantallas. En la publicacin Application
Development Tools: Screen Design Aid Users Guide and Reference,
SC09-1340 aparece ms informacin referente a este producto.
El Programa de Utilidad para la Entrada del Fuente (SEU), que es un
editor de pantalla completa que puede utilizarse para introducir y actualizar
los miembros fuente. En la publicacin Programa de Utilidad para Entrada
del Fuente (SEU) Gua del Usuario y Manual de Consulta, SC10-9018
(SC09-1338) aparece ms informacin referente a este producto.
El Lenguaje de Consulta Estructurada (SQL), que permite insertar instrucciones
SQL en los programas COBOL/400. En las publicaciones SAA* Lenguaje de
Consulta Estructurada SQL/400 Manual de Consulta, SC10-8997 (SC41-9608)

xii

COBOL/400 Gua del usuario

y SAA* Lenguaje de Consulta Estructurada SQL/400 Gua del Programador,


SC10-8998 (SC41-9609) aparece ms informacin referente a este producto.
El programa bajo licencia Customer Information Control System/400
(CICS/400*), que permite introducir transacciones en estaciones de trabajo
remotas y procesarlas simultneamente mediante programas de aplicaciones
escritas por el usuario. El programa bajo licencia incluye funciones para crear,
utilizar y efectuar un mantenimiento de bases de datos y para poder establecer
comunicacin con CICS con otros sistemas operativos.
|
|
|

En la Gua de Programacin de Aplicaciones CICS/400, SC33-0822 aparece


ms informacin sobre cmo utilizar este producto para la programacin de
aplicaciones.

Estndares Industriales Utilizados en el Diseo del Compilador


El compilador COBOL/400 se ha diseado de acuerdo con los estndares industriales siguientes interpretados por IBM, como en septiembre de 1987:
El subconjunto intermedio estndar del American National Standards Institute
(ANSI X3.23-1985).
La International Standards Organization (ISO) 1989-1985.
El nivel intermedio de la Federal Information Processing Standards Publication
(FIPS PUB 21-2) de marzo de 1986. Se ofrece soporte adicional para muchos
dispositivos de nivel superior.
Algunos fragmentos de este manual se han copiado del American National
Standard Programming Language COBOL, ANSI X3.23-1985, ISO 1989-1985 y se
han reproducido con la autorizacin del American National Standard Programming
Language COBOL, ANSI X3.23-1985, ISO 1989-1985 (copyright 1985 de American
National Standards Institute). Estas copias pueden adquirirse en el American
National Standard Institute, sito en 1430 Broadway, New York, New York, 10018.
La Conference On DAta SYstems Languages (CODASYL) se encarga del mantenimiento del lenguaje COBOL.

Acerca de este manual

xiii

xiv

COBOL/400 Gua del usuario

Captulo 1. Introduccin al Lenguaje de Programacin


COBOL/400
COmmon Business Oriented Language (COBOL) es un lenguaje de programacin
que se parece al ingls. Como su propio nombre indica, COBOL es especialmente
eficiente para el proceso de problemas de gestin. Pone nfasis en la descripcin
y el manejo de tems de datos y de registros de entrada/salida; de esta manera, se
adapta bien a la gestin de grandes archivos de datos.
El lenguaje COBOL/400 proporciona muchos elementos de la Interfaz de Programacin Comn COBOL (CPI) de la Arquitectura de Aplicacin de Sistemas IBM *
(SAA*) y es el producto implantado en el sistema AS/400.
El compilador y la biblioteca COBOL/400 es un programa con licencia IBM que
acepta y ejecuta programas COBOL que sigan el estndar ANSI X3.23-1985 (American National Standard Programming Language COBOL, ANSI X3.23-1985, ISO
1989-1985). ANSI es una organizacin formada por fabricantes, consumidores y
grupos de intereses comunes y generales, que establece los procedimientos por
los que las organizaciones acreditadas crean y mantienen unos estndares industriales voluntarios en los Estados Unidos.

Extensiones al Estndar ANSI


Para ayudar al usuario en la utilizacin del COBOL en el sistema AS/400, el programa con licencia COBOL/400 incluye asimismo una serie de ampliaciones IBM
al estndar ANSI X3.23-1985. Entre las ampliaciones ms significativas se
incluyen:
TRANSACTION I/O: puede enviar y recibir registros de una estacin de
trabajo.
COPY: puede utilizar archivos descritos externamente.
DATABASE I/O: puede utilizar entradas estndar de Divisin de Datos y de
Entorno COBOL para especificar la identificacin de archivos, las definiciones
de campos y las estructuras de datos. Se han aadido clusulas en los verbos
READ, WRITE, REWRITE, DELETE y START para dar soporte a la base de
datos del AS/400.
Tipos de datos ampliados: da soporte a datos computational-3 (decimales
internos o decimales empaquetados) y computational-4 (binarios).
Se da soporte a los tipos de datos booleanos y puntero.
Tiene la opcin de utilizar el apstrofe en lugar de comillas.
Se da soporte a las instrucciones dirigidas al compilador SKIP1/2/3, EJECT y
TITLE.
ACCEPT/DISPLAY Ampliado: proporciona soporte para la E/S de la estacin
de trabajo a nivel de campo.
Clusula LIKE: puede definir las caractersticas de un nombre de datos
copindolos de un nombre de datos definido anteriormente.

Copyright IBM Corp. 1994

Supresin del listado del compilador: puede suprimir de forma selectiva las
partes del listado del compilador utilizando la instruccin *CBL o *CONTROL o
la frase SUPPRESS de la instruccin COPY.
Se da soporte a literales no numricos hexadecimales.

Caractersticas del Compilador COBOL/400


Las siguientes caractersticas independientes del lenguaje estn disponibles con el
compilador COBOL/400:
Comprobacin de sintaxis:
El Programa de Utilidad para la Entrada del Fuente (SEU) proporciona un comprobador de sintaxis COBOL que comprueba los errores en lneas de cdigo
mientras el usuario los entra o los cambia. Se visualizan los mensajes de
error, lo que le permite corregirlos antes de la compilacin.
Opcin de referencia cruzada:
Ofrece un listado de cada nombre de Divisin de Datos y nombre de
prrafo de Divisin de Procedimientos.
Indica los nmeros de instruccin de cada referencia para el tem.
Supresin de mensajes de diagnsticos por debajo del nivel especificado por el
usuario.
El distintivo del Federal Information Processing Standard (FIPS) emite mensajes que identifican elementos del lenguaje obsoletos o que no estn conformes en el programa fuente COBOL. Un programa fuente es un conjunto
de instrucciones que se escribe en un lenguaje de programacin y que debe
convertirse en lenguaje de mquina antes de que se ejecute el programa.
El distintivo SAA se utiliza para destacar las funciones del programa que no se
pueden transportar a otros entornos COBOL de SAA.

Utilizacin de la Notacin de Sintaxis COBOL/400


En COBOL, los formatos bsicos se presentan en un sistema uniforme de notacin
de sintaxis que se define en los prrafos siguientes. Esta notacin est diseada
para ayudarle a escribir instrucciones fuente COBOL.
Las palabras clave COBOL aparecen en letras maysculas; por ejemplo:
PARM1
Deben escribirse tal y como se muestra. Si no se escribe alguna palabra clave
necesaria, el compilador lo considera un error.
Las variables que representan nombres o valores suministrados por el usuario
aparecen en letras minsculas; por ejemplo:
parmx
Para una consulta ms fcil del texto, algunas palabras aparecen seguidas de
un guin y un dgito o una letra; por ejemplo:
identifier-1
Este sufijo no cambia la definicin sintctica de la palabra.

COBOL/400 Gua del usuario

Los operadores aritmticos y lgicos (+, -, *, /, **, >, <, =, >=, y <=) que aparecen en formatos de sintaxis son necesarios. Estos operadores son palabras
reservadas como caracteres especiales. Para obtener un listado completo de
palabras COBOL/400 reservadas, consulte la seccin Palabras Reservadas
de la publicacin Consulta COBOL/400
Todos los signos de puntuacin y dems caracteres especiales que aparecen
en el diagrama son requeridos por la sintaxis del formato cuando se muestran;
si no los incluye, el programa dar un error.
Deber escribir las clusulas necesarias y las clusulas opcionales (cuando
proceda) en el orden que muestra el diagrama, a menos que las reglas asociadas indiquen lo contrario de manera explcita.

Lectura de los Diagramas de Sintaxis


En este manual, la sintaxis se describe utilizando la estructura definida a continuacin.
Lea los diagramas de sintaxis de izquierda a derecha y de arriba a abajo,
siguiendo la lnea:
55

Indica el inicio de una instruccin. Los diagramas de unidades sintcticas que no sean instrucciones, como pueden ser las clusulas,
frases y prrafos, tambin se inician con este smbolo.

Indica que la sintaxis de la instruccin contina en la lnea siguiente.

Indica que una instruccin viene de la lnea anterior.

5%

Indica el final de una instruccin. Los diagramas de unidades sintcticas que no sean instrucciones, como pueden ser las clusulas,
frases y prrafos, tambin terminan con este smbolo.

Nota: Las instrucciones dentro de un diagrama de un prrafo completo no


comenzarn con 55 ni terminarn con 5% a menos que su comienzo y
final coincida con el del prrafo.
Los tems necesarios aparecen en la lnea horizontal (la va principal). Los
tems opcionales aparecen por debajo de la lnea principal:
55STATEMENTtem necesario5%
tem opcional

Cuando pueda escoger entre dos o ms tems, aparecern verticalmente, en


una pila. Si debe escoger uno de los dos tems, aparecer un tem de la pila
en la lnea principal. Si la eleccin de un tem es opcional, aparecer la pila
entera por debajo de la lnea principal:
55STATEMENTeleccin necesaria 15%
eleccin necesaria 2
eleccin opcional 1
eleccin opcional 2

Una flecha que vuelve hacia la izquierda por encima de un tem indica que
dicho tem puede repetirse:

55STATEMENTtem repetible 5%

Captulo 1. Introduccin al Lenguaje de Programacin COBOL/400

Un flecha de repeticin por encima de una pila de elecciones necesarias u


opcionales indica que puede realizar ms de una eleccin en los tems apilados, o repetir una sola eleccin:

55STATEMENTeleccin35%
eleccin1
eleccin4
eleccin2

El ejemplo siguiente muestra cmo se utiliza la sintaxis:


Formato
.3/

.1/
.2/
6

55STATEMENTidentificador-15
literal1
tem1
5identificador-35
TO
ROUNDED .5/
6 .4/

identificador45
ROUNDED
55%
.6/
ENDSTATEMENT
5
.7/
SIZE ERROR sentencia imperativa
ON

donde tem-1 es:


55identificador-25%
literal2
expresin aritmtica-1

.1/ La palabra clave STATEMENT debe especificarse y codificarse tal y como se


muestra.
.2/ Este operando es necesario. Debe codificarse el identificador-1 o el literal-1.
.3/ El operando tem-1 es opcional. Puede codificarse o no, segn sea requerido
o no por la aplicacin. Si se codifica, debe repetirse, con cada entrada separada por uno o ms espacios en blanco. Las selecciones de entrada permitidas para este operando se describen al final del diagrama.
.4/ El operando identificador-4 es opcional. Si se especifica, debe repetirse con
uno o ms espacios en blanco separando cada entrada. A cada entrada se le
puede asignar la palabra clave ROUNDED.
.5/ En los casos en los que varias lneas deban continuar ms all del margen
derecho, se preserva el orden de lnea de arriba a abajo.
.6/ La palabra clave ON es opcional para la palabra clave SIZE ERROR, que es
opcional por s misma. Si se codifica SIZE ERROR, entonces es necesario el
operando sentencia imperativa.
.7/ La palabra clave END-STATEMENT puede codificarse al final de la instruccin. No es un delimitador necesario.

COBOL/400 Gua del usuario

Lectura de las Ampliaciones IBM


Una ampliacin IBM generalmente aade o contradice una regla o restriccin que
la precede inmediatamente. Primero se presenta el estndar, porque algunos programadores utilizan el lenguaje COBOL/400 sin ampliaciones IBM. Despus se
presenta la ampliacin para aquellos que s las utilizan.
Las ampliaciones IBM dentro de figuras o tablas se muestran en recuadros a
menos que se identifiquen explcitamente como ampliaciones.
Las clusulas e instrucciones que aparecen dentro de diagramas de sintaxis que
sean ampliaciones del lenguaje COBOL/400 para ANSI X3.23-1985 COBOL se
incluyen en lneas dobles, tal y como se muestra a continuacin:

5RECORDEXTERNALLY-DESCRIBED-KEY5
KEY IS
nomb-fech-2

Ampliacin de IBM
Las ampliaciones del lenguaje COBOL/400 para ANSI X3.23-1985 COBOL que
forman parte de la descripcin de texto estn encerradas en lneas de Ampliacin
IBM, como en este prrafo.
Fin de Ampliacin de IBM
Las clusulas e instrucciones COBOL que aparecen en los diagramas que se comprueban por sintaxis, pero que el compilador COBOL/400 trata como documentacin, estn encerradas dentro de asteriscos, de la manera siguiente:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
55
\ RESERVEentero \
\
AREA
\
\
AREAS
\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Cdigos de Entrada del Lenguaje de Control


El recuadro que aparece en la parte inferior derecha de cada diagrama de sintaxis
CL contiene los cdigos de entrada que especifican el entorno en el que puede
entrarse el mandato. Los cdigos indican si el mandato:
puede utilizarse en un trabajo interactivo o de proceso por lotes (fuera de un
programa compilado; Trabajo:B o I)
Puede utilizarse en un programa compilado interactivo o de proceso por lotes
(Pgm:B o I)
Puede utilizarse en un procedimiento REXX interactivo o de proceso por lotes
(REXX:B o I)

Captulo 1. Introduccin al Lenguaje de Programacin COBOL/400

Puede utilizarse como parmetro para el mandato CL CALL, o para pasar


como serie de caracteres al programa de sistema QCMDEXC (Exec).

Visin General de la Programacin en COBOL/400


El usuario sigue cuatro pasos o fases principales para crear el programa
COBOL/400:

Introduccin del programa fuente.


Compilacin del programa fuente.
Depuracin del programa.
Ejecucin del programa compilado.

Introduccin del Programa COBOL


El Programa de Utilidad para la Entrada del Fuente (SEU) proporciona una pantalla
especial que se corresponde con la codificacin estndar COBOL para ayudarle a
entrar un programa fuente COBOL adecuado en el sistema. El SEU proporciona
tambin un comprobador de sintaxis COBOL que comprueba los errores de cada
lnea mientras el usuario los entra o los cambia. Para obtener ms informacin
sobre la introduccin del programa fuente COBOL/400, consulte el Captulo 2, Instalacin del Programa Fuente en el Sistema AS/400. Para obtener ms informacin sobre la utilizacin del SEU, consulte la SEU Gua del Usuario y Manual de
Consulta.

Compilacin del Programa COBOL


Una vez entrado el programa fuente en el sistema, el usuario deber compilar
dicho programa fuente utilizando el mandato Create Programa COBOL
(CRTCBLPGM). El compilador se llama para crear un programa objeto COBOL y
un listado. Un programa objeto es un conjunto de instrucciones que la mquina
puede utilizar. Un compilador produce el programa objeto desde un programa
fuente.
El usuario puede especificar varias opciones del compilador utilizando el mandato
CRTCBLPGM o utilizando la instruccin PROCESS con las opciones deseadas.
Cualquier opcin especificada en la instruccin PROCESS altera temporalmente
las opciones correspondientes al mandato CRTCBLPGM. Este proceso se explica
detalladamente en el Captulo 3, Compilacin de un Programa COBOL/400.

Depuracin del Programa COBOL


El sistema operativo OS/400 proporciona las funciones siguientes, que el usuario
puede utilizar para probar y depurar programas:
Biblioteca de prueba
Puntos de interrupcin
Rastreos.
El compilador COBOL/400 ofrece las funciones siguientes para la comprobacin y
depuracin de programas:
Caractersticas de depuracin
Vuelco con formato.
Estas caractersticas le permiten supervisar las operaciones de programas especficos durante el tiempo de ejecucin. Debe decidir qu es lo que debe supervisar y
qu informacin recuperar para los propsitos de depuracin.

COBOL/400 Gua del usuario

Consulte el Captulo 5, Depuracin del Programa para obtener ms informacin


sobre las caractersticas de la depuracin.

Ejecucin del Programa COBOL


Podr ejecutar el programa COBOL de muchas maneras, siempre en funcin de la
persona que lo haya escrito, de la manera de escribirlo y del usuario. Podr ejecutar un programa COBOL llamndolo desde un programa CL, desde un programa
de aplicacin, desde otro programa de lenguaje de alto nivel o desde un mandato
creado por el usuario.
Cuando se acaba el programa, el sistema devuelve el control al que lo ha llamado.
Para ms informacin acerca de la ejecucin del programa, consulte el Captulo 4,
Ejecucin del Programa en COBOL.

Captulo 1. Introduccin al Lenguaje de Programacin COBOL/400

COBOL/400 Gua del usuario

Captulo 2. Instalacin del Programa Fuente en el Sistema


AS/400
Este captulo proporciona la informacin necesaria para instalar el programa. Este
captulo tambin describe brevemente las herramientas y la metodologa que necesarias para completar la instalacin.
Hay dos formas de instalar un programa fuente COBOL en el sistema:
Utilizando el Programa de Utilidad para la Entrada del Fuente (SEU). Este
mtodo se explica con detalle en este captulo.
Desde un disquete o cinta utilizando la funcin de copia del OS/400.
Consulte la publicacin CL Reference para obtener informacin adicional sobre
cmo utilizar la funcin COPY para la entrada del programa fuente desde
disquete o cinta.
Para instalar el programa fuente COBOL utilizando el SEU, especifique el mandato
Arrancar Programa de Utilidad para la Entrada del Fuente (STRSEU) y especifique
CBL para el parmetro TYPE. Consulte la publicacin SEU Gua del Usuario y
Manual de Consulta para obtener ms informacin sobre el mandato STRSEU y
sobre el uso del SEU.

Diseo del Programa COBOL/400


Se puede utilizar la estructura de programa de la Figura 1 en la pgina 10 como
modelo para desarrollar programas COBOL legibles y eficientes. Observe que
todas las entradas que aparecen a continuacin no son necesarias; la mayora slo
se proporcionan con finalidades informativas.

Copyright IBM Corp. 1994

IDENTIFICATION DIVISION. .1/


PROGRAM-ID. nombre de programa.
AUTHOR. entrada de comentarios.
INSTALLATION. entrada de comentarios.
DATE-WRITTEN. entrada de comentarios.
DATE-COMPILED. entrada de comentarios.
SECURITY.
\
EL prrafo SECURITY puede contener el prlogo del
\
programa. El prlogo contiene una descripcin del programa
\
y puede ser tan descriptivo o breve como recomienden las
\
directrices de instalacin. Se recomienda utilizar las
\
minsculas para los comentarios; no obstante, puesto que
\
algunas impresoras pueden imprimir slo letras en
\
maysculas, los comentarios pueden escribirse en
\
maysculas. El subrayado sirve para resaltar los
\
comentarios.
ENVIRONMENT DIVISION. .2/
CONFIGURATION SECTION. .3/
SOURCE-COMPUTER. IBM-AS4.
OBJECT-COMPUTER. IBM-AS4.
SPECIAL-NAMES.
REQUESTOR IS CONSOLE.
INPUT-OUTPUT SECTION. .4/
FILE-CONTROL.
SELECT nombre de archivo ASSIGN TO DISK nombre de archivo
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS nombre de datos.
DATA DIVISION. .5/
FILE SECTION.
FD nombre de archivo
BLOCK CONTAINS 2 RECORDS
RECORD CONTAINS 8 CHARACTERS
LABEL RECORDS ARE STANDARD
DATA RECORD IS nombre de registro
1 nombre de registro PIC X(132).
WORKING-STORAGE SECTION.
77 nombre de datos PIC XX.
LINKAGE SECTION.

Identification Division .1/ es la nica divisin


que debe incluirse; todas las otras divisiones
son opcionales.
Environment Division .2/ consta de dos secciones: Configuration Section .3/, que describe las las especificaciones generales de los
sistemas objeto y fuente y Input-Output
Section .4/, que define cada archivo y especifica la informacin que se necesita para transmitir los datos entre un medio externo y el
programa COBOL.
Data Division .5/ describe los archivos que se
deben utilizar en el programa, as como los
registros que contienen. Tambin describe
cualquier tem de datos del almacenamiento
de trabajo que sea necesario.
Procedure Division .6/ se compone de declarativas opcionales, procedimientos que contienen secciones y/o prrafos, sentencias e
instrucciones.

PROCEDURE DIVISION. .6/


DECLARATIVES
END DECLARATIVES.
proceso principal SECTION.
prrafo principal.
instrucciones COBOL.
STOP RUN.

Figura 1. Ejemplo de la Estructura del Programa


COBOL/400

Formato del Archivo Fuente


La longitud de registro estndar de los archivos fuente es de 92 caracteres. Estos
92 caracteres estn compuestos por un nmero de secuencia de 6 caracteres, un
rea de fecha de ltima modificacin de 6 caracteres y un campo de datos de 80
caracteres.
El compilador COBOL/400 soporta una longitud de registro adicional de 102; al
final del registro (posiciones 92-102), se coloca un campo de 10 caracteres que
contiene informacin suplementaria. El compilador COBOL no utiliza esta informacin, pero se coloca en el extremo derecho del listado del compilador. El
usuario es el responsable de situar la informacin en este campo. Si quiere utilizar
este campo adicional, cree un archivo fuente con una longitud de registro de 102.
IBM proporciona un archivo fuente en el que se pueden almacenar registros fuente
si es que no desea crear su propio archivo. Este archivo, denominado QLBLSRC,
se encuentra en la biblioteca QGPL y su longitud de registro es de 92 caracteres.

10

COBOL/400 Gua del usuario

Instalacin del Fuente Mediante el SEU


El SEU proporciona unos formatos de pantalla especiales para COBOL. Corresponden al Formulario de Codificacin COBOL que se ha diseado para facilitar la
instalacin del programa fuente COBOL. La Figura 2 muestra un formato de pantalla, la relacin entre los encabezamientos en el Formulario de Codificacin
COBOL y las etiquetas de la pantalla; tambin indica el lugar en el que se debe
entrar el cdigo fuente.
Columnas. . . :
1 71
Editar
QGPL/QLBLSRC
SEU==>
XMPLE1
5 FMT CB ......-A+++B+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
El SEU puede visualizar una
\\\\\\\\\\\\\\\ Principio de datos \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
lnea de formato para

1.
ENVIRONMENT DIVISION.
ayudar a hacer cambios
%
2.
CONFIGURATION SECTION.
o teclear entradas,
3.
SOURCE-COMPUTER. IBM-AS4.
posicin por posicin.
4.
INPUT-OUTPUT SECTION.
5.
FILE-CONTROL.
'''''''
6.
SELECT FILE-1 ASSIGN TO DATABASE-MASTER.
7.
SELECT FILE-2 ASSIGN TO DATABASE-MASTER.
\\\\\\\\\\\\\\\\\\ Fin de datos \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Tipo de solicitud . CB

Nmero de secuencia .

5.

Continuacin
rea-A
FILE

rea-B
-CONTROL.

F3=Salir
F4=Solicitud
F5=Renovar
F11=Registro anterior
F12=Cancelar
F23=Seleccionar solicitud F24=Ms teclas

Figura 2. Formato de Pantalla SEU

Para obtener una descripcin completa sobre la instalacin del programa mediante
el SEU, consulte el manual SEU Gua del Usuario y Manual de Consulta.

Utilizacin en el SEU del Comprobador de Sintaxis COBOL


Para utilizar el comprobador de sintaxis COBOL en el SEU, especifique el parmetro TYPE(CBL) del mandato STRSEU. El comprobador de sintaxis COBOL
comprueba cada lnea en busca de errores mientras introduce lneas nuevas o
cambia lneas existentes. Se identifican las instrucciones fuente incorrectas y se
visualizan mensajes de error, lo que permite corregir los errores antes de compilar
el programa. Puesto que el comprobador de sintaxis COBOL slo comprueba una
instruccin a la vez, independientemente de las instrucciones que la preceden o la
siguen, slo pueden detectarse los errores de sintaxis dentro de los datos fuente.
No se detectan errores interrelacionales como por ejemplo los nombres no definidos y las referencias incorrectas dirigidas a nombres. El compilador COBOL
detecta estos errores cuando se compila el programa.
Cada vez que se entra o modifica una lnea fuente, se puede comprobar la sintaxis
de 496 lneas de cdigo fuente como una unidad. La longitud de una sola unidad
de comprobacin de sintaxis viene determinada por la ampliacin de una lnea
entrada o modificada:
Una unidad de comprobacin de sintaxis se extiende hacia el comienzo de un
miembro fuente hasta la primera lnea fuente, o hasta que se encuentra una
lnea que finalice en un punto.

Captulo 2. Instalacin del Programa

11

Una unidad de comprobacin se extiende hacia el final del miembro fuente


hasta la ltima lnea fuente, o hasta que se encuentra una lnea que finalice en
punto.
Si esta unidad tiene ms de 496 lneas fuente (sin incluir las lneas de comentarios) el sistema responde con un mensaje adecuado.
Si se produce un error en una unidad de comprobacin de sintaxis, toda la unidad
se presenta en contraste invertido. El mensaje del final de la pantalla hace referencia al primer error de la unidad.
La comprobacin de sintaxis se produce lnea a lnea mientras se introduce el
cdigo fuente. Las lneas que constan de instrucciones incompletas generan mensajes de error. Estos mensajes desaparecen cuando se completan las instrucciones, tal como sucede en el siguiente ejemplo:
ADD A
TO BCD.
Un mensaje de error se genera una vez que se especifica la primera lnea y desaparece cuando se especifica la segunda lnea, una vez completada la instruccin.
Una instruccin COBOL puede extenderse en un mximo de 496 lneas. Asimismo, si una lnea fuente se especifica o se modifica, puede comprobarse la sintaxis de hasta 496 lneas de cdigos fuente como una unidad.
Las siguientes regulaciones se aplican a la comprobacin de sintaxis de las funciones fuente COBOL:
No se comprueba la sintaxis en el cdigo fuente de una lnea con un asterisco
(*) o una barra (/) en la columna 7. Un asterisco indica una lnea de comentarios; una barra inclinada indica una lnea de comentarios y un salto de pgina.
No se acepta ninguna opcin del compilador durante la comprobacin de sintaxis.
Por ejemplo, el comprobador de sintaxis acepta las comillas dobles o simples
como delimitadores no numricos, siempre y cuando no se mezclen dentro de
una unidad de comprobacin de sintaxis. El comprobador de sintaxis permanece inactivo si el delimitador es el mismo que se especificar en el mandato
CRTCBLPGM para compilar instrucciones fuente COBOL o en la instruccin
PROCESS.
La primera sentencia que sigue a cualquier encabezamiento de prrafo que se
lista a continuacin debe empezar en la misma lnea que el encabezamiento
del prrafo.
PROGRAM-ID.
AUTHOR.
INSTALLATION.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY.
SOURCE-COMPUTER.
OBJECT-COMPUTER.
SPECIAL-NAMES.
La sustitucin especificada por las clusulas CURRENCY y DECIMAL-POINT
del prrafo SPECIAL-NAMES no se aceptan durante la comprobacin de sintaxis interactiva.

12

COBOL/400 Gua del usuario

Cuando se utiliza la clusula REPLACING Identificador-1 BY Identificador-2 de


la instruccin COPY y cuando alguno de los identificadores incluye modificacin de referencias, SEU comprueba nicamente que los parntesis coincidan. Para obtener ms informacin sobre la modificacin de referencias,
consulte el Captulo 11, Consideraciones de Programacin en COBOL/400.

Sintaxis de las Instrucciones del Lenguaje de Consulta


Estructurada (SQL)
La sintaxis de las instrucciones SQL en un programa fuente COBOL es la
siguiente:
5

EXEC SQL instrucc. sqlEND-EXEC.5%

Si el tipo de miembro del programa fuente es SQLCBL o CICSSQLCBL, cuando el


comprobador de sintaxis COBOL detecta una instruccin SQL, la instruccin se
pasa al comprobador de sintaxis SQL. Si se detecta un error, se devuelve un
mensaje.
Si se detecta una instruccin SQL y el tipo de miembro no es SQLCBL ni
CICSSQLCBL, se devuelve un mensaje COBOL que indica que una instruccin
COBOL es errnea.
Si hay errores en la instruccin SQL incluida adems de errores en las anteriores
instrucciones COBOL, el mensaje de error SQL slo se visualizar despus de
corregir los errores COBOL anteriores.
Para obtener ms informacin sobre las instrucciones SQL, consulte el manual
SQL/400* Manual de Consulta.

Sintaxis de las Instrucciones del Sistema de Control de


Informacin del Cliente (CICS)
La sintaxis de las instrucciones CICS incluidas de un programa fuente COBOL es
la siguiente:
5EXEC CICSinstruccin-cicsEND-EXEC.5%
Si el tipo de miembro del programa fuente es CICSCBL o CICSSQLCBL, cuando el
comprobador de sintaxis COBOL detecta una instruccin CICS, el comprobador de
sintaxis busca nicamente los errores de sintaxis elementales.
Si se detecta una instruccin CICS y el tipo de miembro no es CICSCBL ni
CICSSQLCBL, se devuelve un mensaje COBOL que indica que la instruccin
COBOL es errnea.
Para obtener ms informacin sobre las instrucciones CICS/400 consulte la publicacin CICS/400 Application Programming Guide.

Captulo 2. Instalacin del Programa

13

14

COBOL/400 Gua del usuario

Captulo 3. Compilacin de un Programa COBOL/400


Es preciso compilar el programa fuente COBOL/400 para producir un programa
objeto que se pueda ejecutar. Esto se realiza con el mandato Crear Programa
COBOL (CRTCBLPGM). El resultado de la compilacin es un programa objeto
COBOL y un listado.
Se pueden especificar diferentes opciones de compilador mediante el mandato
CRTCBLPGM, o utilizando la instruccin PROCESS en el propio programa. Cualquier opcin especificada en la instruccin PROCESS prevalce sobre las opciones
correspondientes del mandato CRTCBLPGM. La instruccin PROCESS se trata
ms adelante en el apartado Uso de la Instruccin PROCESS para Especificar las
Opciones del Compilador en la pgina 33.

Programa
Programa
Fuente
5Compilador COBOL 5 objeto
COBOL

& &
&

COBOL

Sistema

Archivos
Operativo

Descritos OS/4
5 Listado

Externam.

- Resumen de mandatos

- Opciones compilador
&

- Listado fuente

- Utilizacin de verbos

- Correl. Div. Datos

- Mensajes FIPS

DDS para

- Mensajes SAA

Archivos
Copiar
- Referencia Cruzada

Descritos
Texto
- Mensajes

Externam.
Fuente

Durante la compilacin, el compilador comprueba tanto la sintaxis del programa


fuente COBOL lnea a lnea como las relaciones entre lneas.

Utilizacin del Mandato Crear Programa COBOL (CRTCBLPGM)


Para compilar un programa fuente COBOL/400 a un programa objeto, debe entrar
el mandato CRTCBLPGM. Este mandato llama al compilador COBOL/400. Se
puede utilizar el mandato CRTCBLPGM interactivamente o en trabajos por lotes, o
bien desde otros programas del sistema AS/400.

Nota de Programacin: El nmero de entradas de la Tabla de Definicin de


Objetos (ODT) y la cantidad de almacenamiento que necesita un programa
COBOL, varan segn la cantidad y tipo de instrucciones COBOL que se utilicen en
el programa. La combinacin de estos factores puede provocar un aumento de los
lmites del tamao interno del AS/400 para el programa. Si se produce esta
anomala, utilice la opcin *NOUNREF del parmetro GENOPT. Si el problema
persiste, el programa debe escribirse de nuevo.

Copyright IBM Corp. 1994

15

Cuando se especifica la opcin *NOUNREF, slo se definen los nombres que


estn referenciados o que sean necesarios para la estructuracin de datos. Esta
opcin es til cuando el programa contiene muchos identificadores sin referencia.
Si no se ha especificado CBL como el tipo de miembro fuente, el compilador emite
un aviso.
Si se utiliza la instruccin COPY de Formato 2 en el programa para acceder a los
archivos descritos externamente, el sistema operativo proporciona informacin al
programa referente a dichos archivos.
Si el compilador COBOL se detiene, se emite el mensaje LBL9001
Compilacin anmala. Programa no creado.
Se puede utilizar un programa de lenguaje de control que puede supervisar esta
excepcin utilizando el mandato Supervisar Mensaje (MONMSG).

Utilizacin de las Pantallas de Solicitud CRTCBLPGM


Para introducir el mandato CRTCBLPGM desde las pantallas de solicitud
CRTCBLPGM, escriba CRTCBLPGM y pulse F4 (Solicitud) para que aparezca la
primera pantalla. Los parmetros y opciones se describen a medida que aparecen
por pantalla, de la pgina 18 a la 28. Los valores por omisin, que aparecen subrayados, se definen en primer lugar.
Cada parmetro de esta pantalla muestra un valor por omisin. Desplace el cursor
ms all de los tems en los que desee aplicar los valores por omisin. Escriba
encima de cualquier tem para establecer los distintos valores u opciones. Si no
est seguro acerca del valor del parmetro, teclee un interrogante (?) en la
primera posicin del campo y pulse Intro o F4 (Solicitud), para recibir ms informacin detallada. El signo de interrogacin debe ir seguido de un espacio en
blanco.
La Figura 3 muestra las pantallas de solicitud CRTCBLPGM. Cuando se visualiza
la primera pantalla de solicitud CRTCBLPGM, tan slo aparecen los parmetros
necesarios que se han solicitado. Para visualizar los parmetros adicionales, pulse
F10. Observe la primera pantalla de la Figura 3. Para consultar el recordatorio de
los parmetros, tal como se muestra en la segunda y tercera pantalla de la
Figura 3, avance pgina.

16

COBOL/400 Gua del usuario

Crear Programa COBOL (CRTCBLPGM)


Escriba la eleccin, pulse Intro.
Programa . . . . . .
Biblioteca . . . .
Archivo fuente . . .
Biblioteca . . . .
Miembro fuente . . .
Nivel de gravedad de
Texto 'descripcin'.

. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
generacin.
. . . . . .

\PGMID
\CURLIB
QLBLSRC
\LIBL
\PGM
29
\SRCMBRTXT

Nonbre,
Nombre,
Nombre
Nombre,
Nombre,
-29

\PGMID
\CURLIB
\LIBL, \CURLIB
\PGM

Parmetros Adicionales
Opciones de listado fuente . . .
+ para ms valores
Opciones de generacin . . . . .
+ para ms valores
F3=Salir F4=Solicitud
F24=Ms teclas

F5=Renovar

\SOURCE, \NOSOURCE, \SRC...


\NOLIST, \LIST, \NOXREF...

F12=Cancelar

Ms...
F13=Cmo util. esta pantalla

Crear Programa COBOL (CRTCBLPGM)

Escriba la eleccin, pulse Intro.


Opciones de conversin . . . . .
Lmite de Mensaje:
Nmero de mensajes . . . . . .
Gravedad lmite de mensaje . .
Imprimir archivo . . . . . . . .
Biblioteca . . . . . . . . . .
Sealizacin FIPS. . . . . . . .
+ para ms valores
Sealizacin SAA . . . . . . . .
Opciones de pantalla ampliada. .
+ para ms valores
Gravedad de sealizacin . . . .
Sustituir programa . . . . . . .
Release destino. . . . . . . . .
Perfil usuario . . . . . . . . .
F3=Salir F4=Solicitud
F24=Ms teclas

F5=Renovar

\NOVARCHAR, \VARCHAR...
\NOMAX
29
QSYSPRT
\LIBL

1-9999, \NOMAX
-29
Nombre
Nombre, \LIBL, \CURLIB

\NOFLAG

\NOFLAG, \FLAG
\DFRWRT, \NODFRWRT...

\YES
\CURRENT
\USER

-99
\NO, \YES
\CURRENT, \PRV, V2R1M...
\USER, \OWNER
Ms...
F12=Cancelar F13=Cmo util. esta pantalla

Crear Programa COBOL (CRTCBLPGM)

Escriba la eleccin, pulse Intro.


Autorizacin . . . . . . . . . .
Vuelco depuracin compilador:
Vuelco texto intermedio. . . . .

F3=Salir F4=Solicitud
F24=Ms teclas

F5=Renovar

\LIBCRTAUT

Nombre, \LIBCRTAUT, \ALL...

1
65535

1-65535, \
1-65535
-31

F12=Cancelar

Final
F13=Cmo util. esta pantalla

Figura 3. Pantallas de Solicitud CRTCBLPGM

Captulo 3. Compilacin de un Programa

17

Parmetros de los Mandatos CRTCBLPGM


A continuacin se muestra una descripcin de los parmetros para el mandato CRTCBLPGM. Primero se
definen los valores por omisin que estn subrayados para su identificacin. Los parmetros y opciones
se describen en el orden en que aparecen en la pantalla de solicitud.
Todos los nombres de objetos especificados para el mandato CRTCBLPGM deben respetar los convenios
de denominacin de AS/400: deben ser nombres bsicos, de 10 caracteres de longitud, estar compuestos por caracteres alfanumricos, el primero de los cuales debe ser alfabtico; o bien pueden ser
nombres entrecomillados de 8 caracteres de longitud.
Si desea relacionar estas descripciones de parmetros con el diagrama de sintaxis CRTCBLPGM, consulte la Figura 4 en la pgina 30.
QLBLSRC
Especifica que el archivo fuente,
Parmetro PGM:
QLBLSRC, contiene el fuente COBOL a
Especifica el nombre del programa as como
compilar.
el nombre de biblioteca para el objeto pronombre-archivo-fuente
grama COBOL que se est creando. Los
Entre el nombre del archivo fuente que
valores posibles son:
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 prrafo PROGRAM-ID del programa
Los valores posibles de la biblioteca son:
fuente COBOL.

nombre-programa
Entre un nombre para identificar el programa COBOL compilado. Si especifica
un nombre de programa para este parmetro, y la compilacin se ejecuta por
lotes, el primer programa del trabajo por
lotes utilizar este nombre; cualquier otro
programa utilizar el nombre especificado
en el prrafo PROGRAM-ID del programa
fuente.
Los posibles valores de la biblioteca:
*CURLIB
Si no especifica un nombre de biblioteca,
se utilizar la biblioteca actual. Si no ha
asignado una biblioteca como biblioteca
actual, se utiliza QGPL.

nombre-biblioteca
Entre el nombre de la biblioteca que
deber contener el objeto programa
creado.
Parmetro SRCFILE:
Especifica el nombre del archivo fuente que
contiene el fuente COBOL a compilar. Los
valores posibles son:

18

COBOL/400 Gua del usuario

*LIBL
Si no especifica ningn nombre de biblioteca, el sistema busca en la lista de bibliotecas la biblioteca en la que se ubica el
archivo fuente.
*CURLIB
Se utiliza la biblioteca actual. Si no ha
asignado una biblioteca como biblioteca
actual, se utiliza QGPL.

nombre-biblioteca
Entre el nombre de la biblioteca que contiene el archivo fuente.
Parmetro SRCMBR:
Especifica el nombre del miembro que contiene el fuente COBOL que se debe compilar.
Este parmetro slo se puede especificar si el
archivo fuente que se referencia en el parmetro SRCFILE es un archivo de base de
datos: Los valores posibles son:
*PGM
Si ha especificado un nombre de programa para el parmetro PGM, el compilador busca el programa fuente en un
miembro que tenga el mismo nombre que
el programa, y crea un programa objeto
con el mismo nombre que el programa y
miembro.

Si no ha especificado ningn nombre de


programa para el parmetro PGM, el compilador busca el programa fuente en el
primer miembro del archivo fuente de la
base de datos, y crea un programa objeto
que utiliza el nombre especificado en el
prrafo PROGRAM-ID.

nombre-miembro-archivo-fuente
Entre el nombre del miembro que contiene el fuente COBOL.
Parmetro GENLVL:
Especifica el nivel de gravedad que determina
si un objeto programa se crea. El nivel de
gravedad se corresponde al nivel de gravedad
de los mensajes que se han producido
durante la compilacin del programa. Si el
nivel de gravedad de los mensajes de error es
mayor que el valor que ha especificado, no se
crea ningn objeto programa. Por ejemplo, si
especifica 19 para este parmetro, no se
crear ningn objeto programa si el nivel de
gravedad de alguno de los mensajes es 20 o
mayor.

descripcin-texto
Introduzca el texto que describe brevemente el programa y sus funciones. La
longitud del texto no puede superar los 50
caracteres y debe ir entre comillas
simples. Las comillas simples no forman
parte de la serie de 50 caracteres.
Parmetro OPTION:
Especifica las opciones que se deben utilizar
cuando se compila el fuente COBOL. Los
valores posibles son:
*SOURCE o *SRC
El compilador produce un listado fuente
compuesto por las las entradas fuente
COBOL y por los mensajes de error en
tiempo de compilacin.
*NOSOURCE o *NOSRC
El compilador no produce la parte fuente
del listado. Si no se necesita un listado
fuente, utilice esta opcin, ya que de este
modo la compilacin se efectuar con
ms rapidez.

Los valores posibles son:


29 Si se produce un error con un nivel de
gravedad mayor que 29, no se crear
ningn objeto programa.

Nivel-gravedad
Especifique un nmero de uno o dos
dgitos del 0 al 29. Si se produce un error
con un nivel de gravedad mayor que este
nivel, no se crear ningn objeto programa.
Parmetro TEXT:
Permite introducir el texto que describe brevemente el programa y su funcin.
*SRCMBRTXT
Utilice el mismo texto para el objeto programa que describe el miembro del
archivo de base de datos que contiene el
fuente COBOL. Si el fuente proviene de
un dispositivo o de un archivo incorporado, el especificar *SRCMBRTXT tiene el
mismo efecto que especificar *BLANK.
*BLANK
No se especifica ningn texto.

*NOXREF
El compilador no produce un listado de
referencias cruzadas para el programa
fuente.
*XREF
El compilador produce un listado de referencias cruzadas para el programa fuente.

*GEN
El compilador crea un objeto programa
una vez compilado el programa.
*NOGEN
El compilador no crea un objeto programa
una vez compilado el programa. Especifique esta opcin si slo desea obtener
listados de error.

*NOSEQUENCE
Los nmeros de referencia no se comprueban para errores de secuencia.
*SEQUENCE
Los nmeros de referencia se comprueban para errores de secuencia. Los

Captulo 3. Compilacin de un Programa

19

errores de secuencia no se producen si


se especifica la opcin *LINENUMBER.

*NOVBSUM
El nmero total de utilizaciones del verbo
no se imprime.
*VBSUM
El nmero total de utilizaciones del verbo
se imprime.

*NONUMBER
Los nmeros de secuencia del archivo
fuente se utilizan para los nmeros de
referencia.
*NUMBER
Los nmeros de secuencia suministrados
por el usuario (columnas 1 a 6) se utilizan
para nmeros de referencia.
*LINENUMBER
Los nmeros de secuencia que el compilador crea se utilizan para los nmeros de
referencia. Esta opcin combina el cdigo
fuente del programa y el cdigo fuente
introducido mediante instrucciones COPY
en una secuencia numerada consecutivamente. Utilice esta opcin si especifica
la sealizacin FIPS (Federal Information
Processing Standards) o la sealizacin
SAA. *

*NOMAP
El compilador no lista la correlacin de
Divisin de Datos.
*MAP
El compilador lista la correlacin de Divisin de Datos.

*NOOPTIONS
No se listan las opciones en activo para
esta compilacin.
*OPTIONS
Se listan las opciones en activo para esta
compilacin.

20

COBOL/400 Gua del usuario

*QUOTE
Especifica que el delimitador comillas (")
se utiliza para literales no numricos y
para literales booleanos. Tambin especifica que el valor de la constante figurativa
QUOTE posee el valor EBCDIC de una
comilla.
Nota: Los datos booleanos son una
categora de tems de datos que estn
limitados a valores 1 0. Un literal
booleano est compuesto por caracteres
booleanos entrecomillados y precedidos
por una B; por ejemplo: B"1".
*APOST
Especifica que el delimitador apstro (')
se utiliza para literales no numricos y
para literales booleanos. Tambin especifica que el valor de la constante figurativa
QUOTE posee el valor EBCDIC de un
apstrofo.

*NOSECLVL
No se lista un texto de mensaje de
segundo nivel para esta compilacin.
*SECLVL
Se lista un texto de mensaje de segundo
nivel para esta compilacin junto con el
texto de error de primer nivel.
Nota: Se imprime el texto de error de
primer nivel cada vez que se
produce un error.

*PRTCORR
El compilador inserta lneas de comentarios en los listados del compilador que
indican los tems elementales que se han
incluido como resultado de utilizar la frase
CORRESPONDING.
*NOPRTCORR
El compilador no inserta lneas de comentario en el listado del compilador cuando
se utiliza la frase CORRESPONDING.

*NOSRCDBG
Esta opcin determina el tipo de informacin que se visualiza en la estacin de
trabajo programable cuando se utiliza el
CoOperative Development

No es posible especificar *SRCDBG y


*LSTDBG a la vez. Especifique una de
las dos.

Environment/400 para compilar programas


COBOL. Vase la nota de la pgina 21
para obtener ms informacin.
El compilador no produce informacin de
depuracin a nivel de fuente. Si
*NOLSTDBG tambin est activa, el compilador tampoco produce informacin de
error a nivel de fuente.
*SRCDBG
Esta opcin determina el tipo de informacin que se visualiza en la estacin de
trabajo programable cuando se utiliza el
CoOperative Development
Environment/400 para compilar programas
COBOL. Vase la nota de la pgina 21
para obtener ms informacin.
El programa produce tanto informacin de
error como de depuracin a nivel de
fuente.
No es posible especificar *SRCDBG y
*LSTDBG juntos. Especifique una de las
dos.

*NOLSTDBG
Esta opcin determina el tipo de informacin que se visualiza en la estacin de
trabajo programable cuando se utiliza el
CoOperative Development
Environment/400 para compilar programas
COBOL. Vase la nota de la pgina 21
para obtener ms informacin.
El compilador no permite ver el listado, la
informacin de error a nivel de fuente ni la
informacin de depuracin a nivel de
listado.
*LSTDBG
Esta opcin determina el tipo de informacin que se visualiza en la estacin de
trabajo programable cuando se utiliza el
CoOperative Development
Environment/400 para compilar programas
COBOL. Vase la nota de la pgina 21
para obtener ms informacin.
El compilador permite ver un listado, as
como informacin de depuracin a nivel
de listado. Si *NOSRCDBG tambin est
activa, el compilador tampoco produce
informacin de error a nivel de fuente.

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Nota:

Slo es posible utilizar las


opciones *NOSRCDBG,
*SRCDBG, *NOLSTDBG y
*LSTDBG si se utiliza el producto
AD/Cycle CoOperative
Development Environment/400
para compilar los programas. Si
especifica una de estas opciones
o ms, pero no tiene instalado el
producto CODE/400, el compilador
COBOL/400 no continuar el
proceso y emitir un mensaje de
error. Para obtener ms informacin acerca de estas opciones,
consulte la publicacin CODE
Debug Tool User's Guide and
Reference, SC09-1622.

*PRINT
El compilador produce un listado de spool.
*NOPRINT
El listado no produce ningn listado de
spool.
Parmetro GENOPT:
Especifica las opciones a utilizar cuando el
objeto programa se ha creado. Los listados
podran utilizarse si se produce algn error en
COBOL. Los valores posibles son:
*NOLIST
No se lista ninguna IRP (representacin
intermedia de programa), cdigo
hexadecimal asociado ni mensajes de
error.
*LIST
Se lista la IRP, sus cdigos
hexadecimales asociados y cualquier
mensaje de error.

*NOXREF
No produce un listado de referencias cruzadas de los objetos definidos en la IRP.
*XREF
Produce un listado de referencias cruzadas de todos los objetos definidos en la
IRP.

Captulo 3. Compilacin de un Programa

21

*NOPATCH
No reserva un espacio en el programa
compilado para un rea de parche de programa.
*PATCH
Reserva un espacio en el programa compilado para un rea de parche de programa. El rea de parche de programa
se puede utilizar para operaciones de
depuracin.

*NODUMP
No lista la plantilla del programa.
*DUMP
Lista la plantilla del programa.

Si se produce el subndice cero, el


sistema operativo no permitir su
utilizacin y emitir el mensaje
MCH0603.

*UNREF
Incluye tems de datos no referenciados
en el programa compilado.
*NOUNREF
No incluye tems de datos no referenciados en programas compilados. De
este modo, se reduce el nmero de
entradas ODT (tabla de definicin de
objetos) utilizadas, lo que permite la compilacin de un programa ms grande. Los
tems de datos no referenciados siguen
apareciendo en el listado de referencias
cruzadas que se ha producido a raz de la
especificacin de OPTION (*XREF).

*NOATR
No lista los atributos de un fuente IRP.
*ATR
Lista los atributos de un fuente IRP.

*RANGE
En el tiempo de ejecucin, el sistema verifica que los subndices se encuentren
dentro de los rangos correctos, pero no
verifica los rangos de los ndices. Asimismo, comprueba las modificaciones de
referencia y las operaciones de subserie
de caracteres generadas por el compilador.
*NORANGE
No verifica los rangos en el tiempo de ejecucin.
Nota: La opcin *RANGE genera un
cdigo para comprobar los rangos
subindexados. Por ejemplo, se
asegura de que el usuario no
intente acceder al elemento 21 de
una matriz de 20 elementos.
La opcin *NORANGE no genera
un cdigo para comprobar los
rangos de subndices.
Estas opciones no eliminan la
comprobacin del subndice cero
realizada por el sistema operativo.

22

COBOL/400 Gua del usuario

*NOOPTIMIZE
El compilador slo realiza optimizaciones
estndar para el programa.
*OPTIMIZE
El compilador intenta generar un programa que opere de forma ms eficiente y
que utilice menos almacenamiento. Sin
embargo, al especificar *OPTIMIZE el
tiempo necesario para compilar el programa puede aumentar considerablemente.

*NODDSFILLER
Si no se encuentran campos coincidentes
mediante una instruccin COPY DDS, no
se generar ninguna descripcin de
campo.
*DDSFILLER
Cuando no se encuentran campos coincidentes mediante una instruccin COPY
DDS, se genera siempre una descripcin
de campo FILLER de carcter nico "07
FILLER PIC X".

*NOSYNC
Se comprueba la sintaxis de la clusula
SYNCHRONIZED.

*SYNC
La clusula SYNCHRONIZED provoca la
alineacin de un tem elemental en un
lmite natural de almacenamiento.

*NOCRTF
Los archivos que no estn disponibles
durante una operacin OPEN, no se
crean dinmicamente.

|
|
|

*CRTF
Los archivos que no estn disponibles
durante una operacin OPEN se crean
dinmicamente. Una vez creados, el
archivo obtendr la autorizacin del perfil
de trabajo. (Consulte la explicacin de la
instruccin OPEN en el manual
COBOL/400 Reference para conocer
mejor las condiciones bajo las que se
pueden producir creaciones de archivos
dinmicos.)
Nota: La longitud mxima de los registros de un archivo que se crear
dinmicamente es 32 766.

*NODUPKEYCHK
No comprueba las claves duplicadas de
los archivos INDEXED.

|
|
|
|
|
|

*DUPKEYCHK
Comprueba las claves duplicadas de los
archivos INDEXED. (Consulte la explicacin sobre la instruccin READ en el
manual COBOL/400 Reference para
comprender mejor las condiciones bajo
las que se indica a un programa la existencia de registros con claves duplicadas.)
Aviso: Si se especifica esta opcin, el
rendimiento del compilador puede verse
afectado.

*STDERR
Se utiliza el manejo de errores estndar.
Consulte el Captulo 6, Manejo de
Errores y Excepciones COBOL/400 en la
pgina 71 para obtener ms informacin.
*NOSTDERR
Se utiliza el mtodo de manejo de errores
de la Versin 1, Releases 1 y 2.

*NOEXTACCDSP
El compilador no permite instrucciones
ACCEPT o DISPLAY ampliadas.
*EXTACCDSP
El compilador permite instrucciones
ACCEPT y DISPLAY ampliadas. Consulte el Apndice E del manual
COBOL/400 Reference para obtener informacin sobre los cambios en las listas de
palabras reservadas que se producen
cuando se utiliza esta opcin.

*NOINZDLT
Los archivos relativos con acceso secuencial no se inicializan con registros suprimidos durante la operacin CLOSE si los
archivos se han abierto para OUTPUT.
Es decir, la cantidad de registros escritos
determinan el lmite de registros. Las
operaciones OPEN subsiguientes slo
permiten acceder hasta el lmite de registros.
*INZDLT
Los archivos relativos con acceso secuencial se inicializan con registros suprimidos
durante la operacin CLOSE si los
archivos se han abierto para OUTPUT.
Los registros activos de los archivos no se
vern afectados. En otras palabras, el
lmite de registro se define como el
tamao de archivo para ulteriores operaciones de E/S.

*NOBLK
El compilador permite bloquear slo los
archivos de acceso SEQUENTIAL que no
tengan una instruccin START.
Si se especifica una clusula BLOCK
CONTAINS, esta clusula se omite,
excepto para los archivos de cinta.
*BLK
Cuando se utilizan BLOCK CONTAINS, el
compilador permite el bloqueo desde los
archivos de acceso DYNAMIC y
SEQUENTIAL con una instruccin
START. Para los archivos RELATIVE que
se han abierto para operaciones de
salida, no est permitido el bloqueo.
Captulo 3. Compilacin de un Programa

23

La clusula BLOCK CONTAINS controla


el nmero de registros que se deben bloquear.
Cuando no se especifica ninguna clusula
BLOCK CONTAINS, el compilador permite
slo bloquear archivos de acceso
SEQUENTIAL que no tengan una instruccin START. El sistema operativo determina la cantidad de registros que se
deben bloquear.

*STDINZ
El compilador inicializa los tems de datos
del usuario a los valores por omisin del
sistema, siempre y cuando no dependan
de una clusula VALUE.
*NOSTDINZ
Para los tems de usuario que no tengan
una clusula VALUE, el compilador no
inicializa los tems de datos a los valores
por omisin del sistema.

*FS21DUPKY
El compilador informa de un estado de
archivo 21 cuando se procesa un archivo
indexado con claves duplicadas en modalidad dinmica o al azar, si el valor de la
clave se cambia entre la instruccin
READ obligatoria y una instruccin
REWRITE o DELETE siguiente.
*NOFS21DUPKY
El compilador no informa de un archivo de
estado 21 cuando se procesa un archivo
indexado con claves duplicadas en modalidad de acceso dinmica o al azar. Una
instruccin REWRITE puede cambiar la
clave de un registro.
Parmetro CVTOPT:
Especifica cmo maneja el compilador los
tipos de datos SAA de tiempo, fecha e indicacin horaria, as como los campos de
caracteres de longitud variable que se han
pasado desde archivos descritos externamente hasta el programa del usuario a
travs de COPY DDS. Los valores posibles
son:

*NOVARCHAR
Los campos de longitud variable se
omiten y se declaran como campos
FILLER.
*VARCHAR
Los campos de longitud variable se
declaran como tems de grupo de longitud
fija y son accesibles para el programa.
Para obtener ms informacin acerca de
los campos de longitud variable, consulte
el apartado Declaracin de tems de
Datos utilizando Tipos de Datos de
CVTOPT en la pgina 137.

*NODATETIME
Los tipos de datos de fecha, hora e indicacin horaria se omiten y se declaran
campos FILLER.
*DATETIME
Los tipos de datos de fecha, hora e indicacin horaria se declaran campos de longitud variable y son accesibles para el
programa.

*NOGRAPHIC
Los tipos de datos DBCS grficos se
omiten y se declaran campos FILLER.
*GRAPHIC
Los tipos de datos DBCS grficos de longitud variable se declaran campos
alfanumricos de longitud fija y son accesibles para el programa.
Cuando la opcin *VARCHAR tambin se
utiliza, los tipos de datos DBCS grficos
de longitud variable se declaran tems de
grupo y son accesibles para el programa.
Para obtener ms informacin sobre los
tipos de datos DBCS grficos, consulte el
apartado Campos Grficos DBCS en la
pgina 139.
Parmetro MSGLMT:
Controla la compilacin indicando el nmero
mximo de mensajes de un nivel de gravedad
de error determinado que pueden ocurrir
antes de que se detenga la compilacin.
Por ejemplo, es posible detener la compilacin si se producen ms de tres errores con
un nivel de gravedad 20 o superior. En este

24

COBOL/400 Gua del usuario

ejemplo, se especificara 3 como el nmero


mximo de mensajes de error, y 20 para el
nivel mximo de gravedad de error. Si se producen tres errores con un nivel de gravedad
20 o superior, la compilacin contina, pero
cuando se produce un cuarto, la compilacin
se detiene automticamente. Si la cantidad
mxima de mensajes de error no se supera ni
se iguala, la compilacin contina independientemente de la cantidad de errores producidos.

lmite-mensaje
Los posibles valores para el nmero
mximo de mensajes de error son:
*NOMAX
La compilacin se completa con normalidad independientemente del
nmero de errores producidos.

1-9999
La compilacin se detiene si el
nmero de errores del nivel de gravedad especificado supera la cantidad
especificada por el usuario. Si la cantidad mxima de mensajes de error no
se supera ni se iguala, la compilacin
contina independientemente de la
cantidad de errores producidos.
gravedad-mensaje
Los posibles valores para el nivel mximo
de gravedad de error son:
29 La compilacin se detiene si la cantidad de errores con un nivel de gravedad 29 o superior sobrepasa el
nmero mximo de mensajes de error
especificado.

nivel-gravedad-mximo
Especifique un nmero de uno o dos
dgitos del 0 al 29. La compilacin se
detiene si la cantidad de errores con
el nivel de gravedad especificado o
superior sobrepasa la cantidad
mxima de mensajes de error especificada por el usuario.
Parmetro PRTFILE:
Especifica el nombre del archivo al que se
dirige el listado del compilador, as como la
biblioteca en la que est ubicado el archivo.
El archivo debe tener un longitud mnima de
registro de 132. Si se especifica un archivo

que contenga un registro de longitud inferior a


132, la informacin se pierde.
Los valores posibles son:
QSYSPRT
Si no se especifica un nombre de archivo,
el listado del compilador se dirige a
QSYSPRT, que es un archivo suministrado por IBM.

nombre-archivo
Entre el nombre del archivo al que se
dirige el listado del compilador.
Los valores posibles de la biblioteca son:
*LIBL
Si no se especifica un nombre de biblioteca, el sistema busca en la lista de bibliotecas *LIBL, para encontrar la biblioteca
en la que se encuentra el archivo.
*CURLIB
Se utiliza la biblioteca actual. Si no ha
asignado la biblioteca como biblioteca
actual, se utiliza QGPL.

nombre-biblioteca
Introduzca el nombre de la biblioteca en la
que se encuentra el archivo.
Parmetro FLAGSTD:
Especifica las opciones de la sealizacin
FIPS. (Seleccione la opcin *LINENUMBER
para asegurarse de que los nmeros de referencia que se utilizan en los mensajes FIPS
sean nicos.) Los valores posibles son:
*NOFIPS
El programa fuente no dispone de la
sealizacin FIPS.
*MINIMUM
Seal FIPS para el subconjunto menor o
mayor.
*INTERMEDIATE
Seal FIPS para el subconjunto intermedio o mayor.
*HIGH
Seal FIPS para el subconjunto mayor.

*NOSEG
No se seala con FIPS el mdulo
opcional SEGMENTATION.

Captulo 3. Compilacin de un Programa

25

*SEG1
Seal FIPS para el mdulo opcional
SEGMENTATION de nivel 1 y superior.

cin ACCEPT ampliada, o hasta que el


almacenamiento intermedio se llene.
Si no se detecta una instruccin ACCEPT
ampliada antes de que el almacenamiento
intermedio se llene, el contenido del almacenamiento intermedio aparece en pantalla. Cuando se detecta una instruccin
ACCEPT ampliada, el contenido actual del
almacenamiento intermedio aparece en
pantalla.

*SEG2
Seal FIPS para el mdulo opcional
SEGMENTATION de nivel 2.

*NODEB
El mdulo opcional DEBUG no se seala
con FIPS.

*NODFRWRT
Todas las instrucciones DISPLAY
ampliadas se ejecutan a medida que se
detectan.

*DEB1
Seal FIPS para el mdulo opcional
DEBUG de nivel 1 y superior.
*DEB2
Seal FIPS para el mdulo opcional
DEBUG de nivel 2.

*NOOBSOLETE
Los elementos de lenguaje obsoletos no
se sealan.
*OBSOLETE
Los elementos de lenguaje obsoletos se
sealan.
Parmetro SAAFLAG:
Especifica si se desea sealar las funciones
COBOL/400* que no estn soportadas por
COBOL SAA. (Seleccione la opcin
*LINENUMBER para asegurarse de que los
nmeros de referencia que se utilizan en los
mensajes COBOL SAA sean nicos.) Los
valores posibles son:
*NOFLAG
No se realiza la sealizacin de COBOL
SAA.
*FLAG
Se realiza la sealizacin de COBOL
SAA.
Parmetro EXTDSPOPT:
Especifica las opciones que se deben utilizar
para las instrucciones ACCEPT y DISPLAY
ampliadas para la estacin de trabajo de E/S.
Los valores posibles son:
*DFRWRT
Las instrucciones DISPLAY ampliadas se
mantienen en un almacenamiento intermedio hasta que se produce una instruc-

26

COBOL/400 Gua del usuario

*UNDSPCHR
Las instrucciones ACCEPT y DISPLAY
ampliadas manejan los caracteres que se
pueden visualizar y los que no.
|
|
|

*NOUNDSPCHR
Utilice esta opcin cuando los datos que
se deben visualizar contengan caracteres
DBCS ampliados. Las instrucciones
ACCEPT y DISPLAY ampliadas manejan
nicamente caracteres que se pueden
visualizar.
Aunque el usuario debe utilizar esta
opcin para estaciones de pantallas
conectadas a controladores 3174 y 3274,
tambin puede utilizarla para estaciones
de trabajo locales. Si no se utiliza esta
opcin, los datos deben contener caracteres visualizables. Si los datos contienen
valores menores que el hexadecimal 20,
los resultados obtenidos no sern los
esperados, ya que aparecern errores
graves e incluso algn formato de pantalla
errneo.

*ACCUPDALL
Todos los tipos de datos se visualizan
previamente en las instrucciones ACCEPT
ampliadas, independientemente de la
existencia de la frase UPDATE.
*ACCUPDNE
Tan slo los datos de edicin numricos
se visualizan previamente en las instrucciones ACCEPT ampliadas que no contengan la frase UPDATE.

Parmetro FLAG:
Especifica el nivel de seguridad mnimo de los
mensajes que se van a imprimir. Los valores
posibles son:
0

Todos los mensajes se imprimen.

nivel-gravedad
Entre un nmero de uno o dos dgitos que
especifique el nivel de gravedad mnimo
de los mensajes que se han de imprimir.
Se listan los mensajes que tienen niveles
de seguridad del valor especificado o
superior.
Parmetro REPLACE:
Especifica si se crea un objeto programa
nuevo cuando un objeto programa del mismo
nombre ya existe en la misma biblioteca. Los
valores posibles son:
*YES
Se crea un nuevo objeto programa y cualquier objeto programa existente del mismo
nombre de la biblioteca especificada se
traslada a la biblioteca QRPLOBJ.
*NO
No se crea ningn objeto programa si un
objeto programa del mismo nombre ya
existe en la biblioteca especificada.
Parmetro TGTRLS:
Especifica el release del sistema operativo en
el que el usuario pretende utilizar el objeto
que se est creando. Se puede especificar
un nivel de release exacto en el formato
VxRxMx, donde Vx es la versin, Rx el
release y Mx el nivel de modificacin. Por
ejemplo, V2R2M0 es versin 2, release 2 y
nivel de modificacin 0.
Nota: Para utilizar el objeto en el sistema
destino, es preciso guardar el objeto
con el nivel de release de destino
especificado en el mandato de
creacin y a continuacin restaurarlo
en el sistema destino.
Los valores posibles son:
*CURRENT
El objeto debe utilizarse en el release del
sistema operativo que se ejecute en ese
momento en el sistema. Tambin es
posible utilizar el objeto en un sistema con
cualquier release posterior del sistema
operativo instalado.

*PRV
El objeto debe utilizarse en el release
previo con un nivel de modificacin 0 del
sistema operativo. Tambin es posible
utilizar el objeto en un sistema con cualquier release ulterior del sistema operativo
instalado.

nivel-release
Especifique el release en el formato
VxRxMx. El objeto puede utilizarse en un
sistema con el release especificado o con
cualquier release posterior del sistema
operativo instalado.
Los valores vlidos dependen de la
versin actual, release y del nivel de
modificacin, que varan con cada release
nuevo.
Parmetro USRPRF:
Especifica el perfil del usuario que trabajar
con el programa COBOL compilado. El perfil
del propietario o del usuario de este programa
sirve para ejecutar el programa y para controlar los objetos que el programa puede utilizar (incluyendo la autorizacin que el
programa tiene para cada objeto). Este parmetro no se actualiza si el programa ya
existe. Para cambiar el valor de USRPRF,
suprima el programa y vuelva a compilarlo utilizando el valor correcto.
Los valores posibles son:
*USER
El perfil de usuario del usuario de este
programa se utiliza cuando se ejecuta el
programa.
*OWNER
El perfil de usuario del propietario del programa y del usuario se utilizan cuando se
ejecuta el programa. Los conjuntos de
autorizaciones para objetos en los dos
perfiles de usuario sirven para encontrar y
acceder a los objetos durante la ejecucin
del programa. El usuario del programa
ser el propietario de cualquier objeto que
se cree durante el programa.
Nota: Especifique el parmetro USRPRF
para reflejar los requisitos de
seguridad de la instalacin. Los
servicios de seguridad disponibles
en el sistema AS/400 se describen

Captulo 3. Compilacin de un Programa

27

con todo detalle en el manual


Seguridad Manual de Consulta.
Parmetro AUT:
Especifica la autorizacin que se otorga a los
usuarios que carecen de una autorizacin
especfica para el objeto programa, que no
estn en la lista de autorizaciones o que su
grupo no tiene autorizacin especfica para el
objeto programa. Es posible alterar la autorizacin de todos los usuarios, o slo de usuarios especficos, una vez creado el objeto del
programa utilizando los mandatos
GRTOBJAUT (Autorizacin de Objeto Otorgado) o RVKOBJAUT (Autorizacin de Objeto
Revocado).
Los posibles valores son:
*LIBCRTAUT
La autorizacin pblica del objeto se
obtiene de la palabra clave CRTAUT de la
biblioteca destino (biblioteca que debe
contener el objeto programa creado).
Este valor se determina cuando se crea el
objeto. Si el valor CRTAUT de la biblioteca cambia despus de que se haya
creado el objeto del programa, el nuevo
valor NO afectar a los objetos existentes.
*ALL
Proporciona autorizacin a todas las operaciones del objeto programa, excepto a
aqullas que hagan referencia al propietario o que estn controladas por la autorizacin de la gestin de listas de
autorizaciones. El usuario puede controlar la existencia del objeto programa,
especificar su seguridad, modificarla, as
como efectuar cualquier tipo de operacin,
pero no puede traspasar su ttulo de propiedad.
*CHANGE
Proporciona a todos los datos autorizacin
para poder realizar todo tipo de operaciones en el objeto programa, excepto
aqullas que estn restringidas para el
propietario o controladas por la autorizacin del objeto y por la autorizacin de

28

COBOL/400 Gua del usuario

la gestin del objeto. El usuario puede


cambiar el objeto y realizar funciones
bsicas, como por ejemplo ejecutar y
depurar el objeto programa.
*USE
Proporciona autorizacin operacional de
objeto y autorizacin de lectura, as como
autorizacin para efectuar operaciones
bsicas en el objeto programa, como por
ejemplo ejecutar el programa. Se avisa al
usuario antes de que el objeto se modifique.
*EXCLUDE
El usuario no tiene acceso al objeto programa.

nombre-lista-autorizacin
Entre el nombre de una lista de
autoridades de usuarios y autorizaciones
a las que el programa se aade. El
objeto programa est protegido por esta
lista de autorizaciones y la autorizacin
pblica del objeto programa se establece
a *AUTL. La lista de autorizaciones debe
estar en el sistema cuando se emite el
mandato CRTCBLPGM. Utilice el
mandato Crear Lista de Autorizaciones
(CRTAUTL) para obtener una lista de
Autorizaciones propia.
Nota: Especifique el parmetro AUT
para reflejar los requisitos de
seguridad de la instalacin. Los
servicios de seguridad disponibles
en el sistema AS/400 se describen
con detalle en el manual
Seguridad Manual de Consulta.
Parmetro DUMP:
Sistema de ayuda de depuracin COBOL/400
de IBM para el personal de servicio de IBM.
Parmetro ITDUMP (n):
Ayuda de depuracin IBM proporcionada para
el personal de servicio de IBM. Este parmetro obliga al compilador a volcar el texto
interno en determinados momentos durante la
compilacin del programa fuente.

Entrada del Mandato CRTCBLPGM desde la Lnea de Mandatos


Es posible entrar el mandato CRTCBLPGM desde la lnea de mandatos. Teclee
CRTCBLPGM seguido de los parmetros adecuados para compilar el programa. Consulte la Figura 4 en la pgina 30 para cerciorarse del tipo de sintaxis adecuada
que se ha de utilizar. Si no est seguro del significado de algunos parmetros,
consulte las descripciones referentes a parmetros y opciones que se encuentran
entre las pginas 18 y 28. Consulte los siguientes ejemplos para conocer la sintaxis correcta que es preciso utilizar para introducir el mandato CRTCBLPGM
desde la lnea de mandatos.

Ejemplo 1
CRTCBLPGM SRCFILE(QGPL/QLBLSRC) SRCMBR(SAMPLE) SAAFLAG(\FLAG)

Fuente Parcial para el Miembro SAMPLE


ID DIVISION.
PROGRAM-ID. EXAMPLE.
El ejemplo anterior permite crear un programa COBOL/400 desde el miembro
fuente SAMPLE en el archivo QLBLSRC y en la biblioteca QGPL. El programa
resultante se llama EXAMPLE. Si se especifica *FLAG para el parmetro
SAAFLAG, se indica al compilador que debe identificar cualquier funcin que no
est soportada por COBOL SAA. En este ejemplo se han utilizado todos los
valores por omisin de los parmetros a excepcin de los parmetros SRCFILE,
SRCMBR y SAAFLAG.

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 parmetro SRCMBR ha tomado el valor por omisin *PGM, lo que significa 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 parmetro
CVTOPT indica que si DDS contiene tipos de datos DBCS grficos, el programa
COBOL deber poder referenciarlos como campos alfanumricos.

Entrada del Mandato CRTCBLPGM desde un Programa CL


Cuando se emite el mandato CRTCBLPGM desde un programa CL, se pueden utilizar las expresiones de concatenacin de todos los valores de los parmetros.
Consulte el manual CL Reference para obtener ms informacin sobre las expresiones de concatenacin. Consltelo tambin para obtener una descripcin de las
reglas de denominacin de objetos OS/400, as como para consultar la descripcin
de la sintaxis de mandatos OS/400.
Interfaz de Programacin de Uso General
Se puede utilizar este mandato en QCMDEXC.
Fin de Interfaz de Programacin de Uso General

Captulo 3. Compilacin de un Programa

29

Sintaxis del Mandato CRTCBLPGM


La Figura 4 muestra la sintaxis del mandato CRTCBLPGM.
55CRTCBLPGMPGM(\CURLIB/\PGMID)5
nombre-bibl./ nombre-prgm.
55
SRCFILE(\LIBL/QLBLSRC)
\CURLIB/
arch-fuente-nomb
nombre-bibl./
55
SRCMBR(\PGM)
arch-fuente-miembr-nomb
55
OPTION(detalle-opcin)
GENOPT(detalle-genopt)
55
CVTOPT(\NOVARCHAR\NODATETIME\NOGRAPHIC)
\VARCHAR \DATETIME \GRAPHIC
55
MSGLMT(\NOMAX29)
lmit-mensaje
gravedad-mx-nivel
55
GENLVL(29)
nivel-gravedad
55
PRTFILE(\LIBL/QSYSPRT)
\CURLIB/ nomb-arch
nombre-bibl./
55
FLAGSTD(\NOFIPS\NOSEG\NODEB\NOOBSOLETE)
\MINIMUM \SEG1 \DEB1 \OBSOLETE
\INTERMEDIATE \SEG2 \DEB2
\HIGH
55
SAAFLAG(\NOFLAG)
\FLAG
55
EXTDSPOPT(\DFRWRT\UNDSPCHR\ACCUPDALL)
\NODFRWRT
\NOUNDSPCHR \ACCUPDNE
55
FLAG()
REPLACE(\YES)
nivel-gravedad
\NO

Figura 4 (Parte 1 de 5). Sintaxis del Mandatos CRTCBLPGM

30

COBOL/400 Gua del usuario

55
TGTRLS(\CURRENT
USRPRF(\USER)
\PRV
\OWNER
nivel-release
55
AUT(\LIBCRTAUT)
\ALL
\CHANGE
\USE
\EXCLUDE
nomb-lista-autorizacin
55
TEXT(\SRCMBRTXT)
\BLANK
'descripcin-text'
55
DUMP(instruccin-inicioinstrucin-final)
55%
ITDUMP(opc.-vuelco)

Job: B,I Pgm: B,I REXX: B,I Exec

Detalles de OPTION:
5\SRC\NOXREF\GEN\NOSEQUENCE\NOVBSUM5
\SOURCE \XREF \NOGEN \SEQUENCE \VBSUM
\NOSRC
\NOSOURCE
5\NONUMBER\NOMAP\NOOPTIONS\QUOTE\NOSECLVL5
\NUMBER \MAP \OPTIONS \APOST \SECLVL
\LINENUMBER
5\PRTCORR\NOSRCDBG\NOLSTDBG\PRINT5
\NOPRTCORR \SRCDBG \LSTDBG \NOPRINT
Detalles de GENOPT:
5\NOLIST\NOXREF\NOPATCH\NODUMP\NOATR5
\LIST
\XREF
\PATCH
\DUMP
\ATR

Figura 4 (Parte 2 de 5). Sintaxis del Mandatos CRTCBLPGM


5\RANGE\UNREF\NOOPTIMIZE\NODDSFILLER\NOSYNC5
\NORANGE \NOUNREF \OPTIMIZE \DDSFILLER \SYNC

Figura 4 (Parte 3 de 5). Sintaxis del Mandatos CRTCBLPGM


5\NOCRTF\NODUPKEYCHK\STDERR\NOEXTACCDSP5
\CRTF
\DUPKEYCHK
\NOSTDERR
\EXTACCDSP

Figura 4 (Parte 4 de 5). Sintaxis del Mandatos CRTCBLPGM


5\NOINZDLT\NOBLK\STDINZ\FS21DUPKY5
\INZDLT \BLK
\NOSTDINZ
\NOFS21DUPKY

Figura 4 (Parte 5 de 5). Sintaxis del Mandatos CRTCBLPGM

Captulo 3. Compilacin de un Programa

31

Compilacin del Programa Fuente para el Release Anterior


El programa COBOL/400 en un sistema AS/400 se puede compilar usando el
release actual del sistema operativo OS/400 y restaurarlo en un sistema AS/400
que utilice un release anterior del sistema operativo.
El parmetro Target Release (TGTRLS) del mandato CRTCBLPGM permite especificar el nivel de release en el que desea utilizar el programa objeto. El parmetro
TGTRLS dispone de tres valores posibles: *CURRENT , *PRV y nivel-release:
Especifique *CURRENT si el programa objeto se debe utilizar en el release del
sistema operativo que en estos momentos se ejecuta en el sistema. Por
ejemplo, si V2R2M0 se ejecuta en el sistema, *CURRENT significa que el
usuario quiere utilizar el programa en un sistema que tiene instalado V2R2M0.
Este valor es el valor por omisin.
Especifique *PRV si el programa objeto se ha de utilizar en el release anterior
con un nivel de modificacin 0 del sistema operativo. Por ejemplo, si V2R2M0
se ejecuta en el sistema, *PRV significa que el usuario quiere utilizar el programa en un sistema que tiene instalado V2R1M0.

Nivel-release permite especificar el nivel de release en el que se desea utilizar


el programa objeto. Los valores que se pueden introducir para este parmetro,
y que se modificarn en cada release nueva, dependen de la versin actual,
release y nivel de modificacin.
Para obtener ms informacin acerca del parmetro TGTRLS, vea la pgina 27.
Es preciso tener presente las siguientes limitaciones:
El soporte que se compila para ser utilizado con el release anterior slo est
disponible cuando se utiliza el parmetro TGTRLS del parmetro
CRTCBLPGM. Especifique *PRV o bien el nivel de release cuando se compile
el programa y gurdelo mediante los mandatos CL Salvar Objeto (SAVOBJ) o
Salvar Biblioteca (SAVLIB) para restaurarlo satisfactoriamente en el release
anterior del sistema operativo.
Slo puede utilizar el parmetro TGTRLS para programas COBOL creados en
el entorno System/38.
Es posible restaurar un programa objeto o a un release anterior a un release
siguiente. No puede restaurar un programa objeto en un sistema que est por
debajo de ms de un release. Es decir, slo se proporciona un nivel anterior
de release de compatibilidad.
No puede utilizar las funciones que son nuevas en el release actual del
sistema operativo en un programa que se ha compilado para ser utilizado en el
nivel de release anterior.
Los programas deben volverse a convertir cuando se restauran al release anterior; por lo tanto, no puede suprimir la observabilidad si los programas han de
volverse a convertir.
No deben haber bibliotecas producto en la parte del sistema de la lista de
bibliotecas.

32

COBOL/400 Gua del usuario

Uso de la Instruccin PROCESS para Especificar las Opciones del


Compilador
La instruccin PROCESS es una parte opcional del programa fuente COBOL. La
instruccin PROCESS se puede utilizar para especificar las opciones que normalmente se especifican durante la compilacin. Las opciones especificadas en la
instruccin PROCESS alteran temporalmente las opciones correspondientes especificadas en el mandato CL CRTCBLPGM.
El formato de la instruccin PROCESS es la siguiente:
Formato

55PROCESSopcin-15%
.

Se aplican las siguientes reglas:


La instruccin PROCESS debe colocarse antes de la primera instruccin
fuente del programa COBOL precediendo inmediatamente al encabezamiento
IDENTIFICATION DIVISION.
La instruccin empieza con la palabra PROCESS. Las opciones pueden aparecer en ms de una lnea; sin embargo, slo la primera lnea puede contener
la palabra PROCESS.
La palabra PROCESS y todas las opciones deben aparecer entre las posiciones 8 y 72. La posicin 7 debe estar en blanco. Las posiciones restantes
pueden utilizarse como en las instrucciones fuente COBOL: de la 1 a la 6 para
nmeros de secuencia, y de la 73 a la 80 para propsitos de identificacin.
Las opciones deben estar separadas por espacios en blanco y/o comas.
Las opciones pueden aparecer en cualquier orden. Si se especifican opciones
contradictorias, por ejemplo, LIST y NOLIST, tiene preferencia la ltima opcin
encontrada.
Si la palabra clave de la opcin es correcta y la subopcin es errnea, se
asume la subopcin por omisin.
No todos los parmetros CRTCBLPGM tienen una opcin correspondiente en la
sentencia PROCESS. Las tablas siguientes indican las opciones de la instruccin
PROCESS disponibles y los parmetros y opciones del mandato CRTCBLPGM
equivalentes. Los valores por omisin se subrayan. Las descripciones de las
opciones de instruccin PROCESS corresponden a las descripciones de las
opciones y parmetros que empiezan en la pgina 18.
Opcin de Instruccin PROCESS

CRTCBLPGM
Opcin de parmetro GENLVL

GENLVL(nn)

nn

Captulo 3. Compilacin de un Programa

33

Opciones de Instruccin PROCESS

CRTCBLPGM
Opciones de parmetro OPTION

34

COBOL/400 Gua del usuario

GEN
NOGEN

*GEN
*NOGEN

NOMAP
MAP

*NOMAP
*MAP

NONUMBER
NUMBER
LINENUMBER

*NONUMBER
*NUMBER
*LINENUMBER

NOSECLVL
SECLVL

*NOSECLVL
*SECLVL

NOOPTIONS
OPTIONS

*NOOPTIONS
*OPTIONS

QUOTE
APOST

*QUOTE
*APOST

NOSEQUENCE
SEQUENCE

*NOSEQUENCE
*SEQUENCE

SOURCE (o SRC)
NOSOURCE
(o NOSRC)

*SOURCE (o *SRC)
*NOSOURCE
(o *NOSRC)

NOVBSUM
VBSUM

*NOVBSUM
*VBSUM

NOXREF
XREF

*NOXREF
*XREF

PRTCORR
NOPRTCORR

*PRTCORR
*NOPRTCORR

Opciones de Instruccin PROCESS

CRTCBLPGM
Opciones de parmetro GENOPT

NOINZDLT
INZDLT

*NOINZDLT
*INZDLT

NOLIST
LIST

*NOLIST
*LIST

STDERR
NOSTDERR

*STDERR
*NOSTDERR

NODDSFILLER
DDSFILLER

*NODDSFILLER
*DDSFILLER

NOSYNC
SYNC

*NOSYNC
*SYNC

NOCRTF
CRTF

*NOCRTF
*CRTF

NODUPKEYCHK
DUPKEYCHK

*NODUPKEYCHK
*DUPKEYCHK

NOEXTACCDSP
EXTACCDSP

*NOEXTACCDSP
*EXTACCDSP

NOBLK
BLK

*NOBLK
*BLK

STDINZ
NOSTDINZ

*STDINZ
*NOSTDINZ

FS21DUPKEY
NOFS21DUPKEY

*FS21DUPKY
*NOFS21DUPKY

RANGE
NORANGE

*RANGE
*NORANGE

UNREF
NOUNREF

*UNREF
*NOUNREF

Opciones de Instruccin PROCESS

CRTCBLPGM
Opciones de parmetro CVTOPT

NOVARCHAR
VARCHAR

*NOVARCHAR
*VARCHAR

NODATETIME
DATETIME

*NODATETIME
*DATETIME

NOCVTGRAPHIC
CVTGRAPHIC

*NOGRAPHIC
*GRAPHIC

Captulo 3. Compilacin de un Programa

35

Opciones de Instruccin PROCESS

CRTCBLPGM
Opciones de parmetro FLAGSTD

NOFIPS
MINIMUM
INTERMEDIATE
HIGH

*NOFIPS
*MINIMUM
*INTERMEDIATE
*HIGH

NOSEG
SEG1
SEG2

*NOSEG
*SEG1
*SEG2

NODEB
DEB1
DEB2

*NODEB
*DEB1
*DEB2

NOOBSOLETE
OBSOLETE

*NOOBSOLETE
*OBSOLETE

Opciones de Instruccin PROCESS


EXTDSPOPT(a b c)

CRTCBLPGM
Opciones de parmetro EXTDSPOPT

DFRWRT
NODFRWRT

*DFRWRT
*NODFRWRT

UNDSPCHR
NOUNDSPCHR

*UNDSPCHR
*NOUNDSPCHR

ACCUPDALL
ACCUPDNE

*ACCUPDALL
*ACCUPDNE

Opciones de Instruccin PROCESS

CRTCBLPGM
Opciones de parmetro SAAFLAG

NOSAAFLAG
SAAFLAG

Opcin de Instruccin PROCESS

*NOFLAG
*FLAG

CRTCBLPGM
Opcin de parmetro FLAG

FLAG(nn)

Opciones de Instruccin PROCESS

nn

CRTCBLPGM

NOFS9MTO0M
FS9MTO0M

no aplicable

NOGRAPHIC
GRAPHIC

no aplicable

FS9MTO0M cambia un estado de archivo 9M a un estado de archivo 0M.

36

COBOL/400 Gua del usuario

La opcin GRAPHIC de la instruccin PROCESS est disponible para procesar


caracteres DBCS en literales DBCS. Consulte el Apndice F, Soporte del Juego
de Caracteres de Idiomas Internacionales de Doble Byte en la pgina 355 para
obtener informacin acerca del soporte DBCS.
La opcin EXTDSPOPT de la instruccin PROCESS debe codificarse con las
opciones entre parntesis asociadas similares a la sintaxis FLAG(nn). Se puede
especificar ms de una opcin dentro de los parntesis para la opcin
EXTDSPOPT. Por ejemplo, para especificar DFRWRT y UNDSPCHR, escriba
EXTDSPOPT(DFRWRT UNDSPCHR)
Tambin es correcto especificar EXTDSPOPT o EXTDSPOPT( ).
Cuando slo se especifica EXTDSPOPT en la instruccin PROCESS, todos los
valores por omisin de las opciones adicionales estn activas.
Si se especifica EXTDSPOPT( ), no tiene ninguna consecuencia para el programa.
Si se especifican opciones contradictorias, la ltima opcin especificada altera temporalmente a las otras.

Compilacin de varios Programas


La instruccin PROCESS se puede utilizar para separar varios programas y/o subprogramas que se han de compilar con una sola invocacin del compilador. (Un
subprograma es un programa llamado que se combina con el programa de
llamada en tiempo de ejecucin para producir una unidad de ejecucin.) Cuando
se compilan programas mltiples, todas las opciones del compilador que se han
especificado en la instruccin del mandato CRTCBLPGM, amn de las opciones
por omisin y de las opciones especificadas en la ltima instruccin PROCESS
que precede al programa, estarn activas para la compilacin del programa. Toda
la salida del compilador se dirige a los destinos especificados por la instruccin del
mandato CRTCBLPGM.
Todos los programas objeto se almacenan en la biblioteca especificada en el parmetro PGM. Si se especifica el nombre del programa para el parmetro PGM, el
primer programa del trabajo por lotes tiene ese nombre, y el resto de programas
utilizan el nombre especificado en el prrafo PROGRAM-ID del programa fuente.

Uso de COPY dentro de la Instruccin PROCESS


Puede utilizarse una instruccin COPY en el programa fuente siempre que pueda
utilizarse una serie de caracteres o un separador. Cada instruccin COPY debe ir
precedida por un espacio y seguida de un punto y un espacio. Para obtener ms
informacin acerca de la instruccin COPY, consulte la seccin Instruccin COPY
del manual COBOL/400 Reference.
La instruccin COPY Formato 1 puede utilizarse dentro de la instruccin
PROCESS para recuperar las opciones del compilador almacenadas previamente
en una biblioteca fuente e incluirlas en la instruccin COPY. COPY puede utilizarse para incluir las opciones que prevalcen sobre aqullas que el compilador
especifica como valores por omisin. Cualquier opcin de la instruccin
PROCESS puede recuperarse con la instruccin COPY.

Captulo 3. Compilacin de un Programa

37

Las opciones del compilador pueden indistintamente preceder y seguir a la instruccin COPY dentro de la instruccin PROCESS. La ltima aparicin detectada de
una opcin prevalece sobre todas las apariciones precedentes de esa opcin.
El ejemplo siguiente muestra el uso de la instruccin COPY dentro de la instruccin PROCESS. La instruccin COPY debe ir seguida de un punto. Observe
tambin que, en este ejemplo, NOMAP prevalece sobre la opcin correspondiente
en el miembro de la biblioteca:
1
2
4
1

PROCESS XREF
COPY DEFLTS.
MAP, SOURCE, LIST
NOMAP, FLAG(2)
IDENTIFICATION DIVISION.

MYPROG
MYPROG
DEFLTS
MYPROG
MYPROG

Explicacin de la Salida del Compilador


La salida del compilador puede incluir:
Un resumen de las opciones de mandatos
Un listado de opciones: listado de las opciones activas para la compilacin.
Utilice OPTION(*OPTIONS).
Un listado fuente: listado de las instrucciones que se encuentran en el programa fuente. Utilice OPTION(*SOURCE o *SRC).
Un listado de utilizaciones de verbos: listado de los verbos COBOL y frecuencia de uso de cada uno de ellos. Utilice OPTION(*VBSUM).
Una correlacin de la Divisin de Datos: glosario de la informacin generada
por compilador referente a los datos. Utilice OPTION(*MAP). Tambin se
incluye una correlacin de los nombres suministrados por el usuario respecto a
los nombres internos generados por el compilador.
Sealizacin SAA: lista de las funciones del programa que no son portables a
otros entornos COBOL SAA. Utilice SAAFLAG(*FLAG).
Mensajes FIPS: lista de mensajes para un conjunto COBOL FIPS, para cualquiera de los mdulos opcionales, para todos los elementos de lenguaje
obsoletos o para una combinacin de un subconjunto COBOL FIPS, mdulos
opcionales y todos los elementos obsoletos. Consulte la informacin referente
al parmetro FLAGSTD de la pgina 25 para un mejor conocimiento de las
opciones especficas que estn disponibles para la sealizacin FIPS.
Un listado de referencias cruzadas. Utilice OPTION(*XREF).
Mensajes del compilador (incluyendo las estadsticas de diagnstico).
Estadsticas de compilacin.
Un listado del programa generado en formato simblico.
Un programa objeto.
La presencia o ausencia de algunos de estos tipos de salidas del compilador viene
determinada por las opciones especificadas en la instruccin PROCESS o por los
mandatos CRTCBLPGM. El nivel de los mensajes de diagnstico impresos
depende de la opcin FLAG.

38

COBOL/400 Gua del usuario

Especificacin del Formato del Listado


Una barra (/) en el rea del indicador (columna 7) de una lnea da como resultado
un salto de pgina del listado del programa fuente. La lnea de comentarios de la
barra (/) se imprime en la primera lnea de la pgina siguiente.
Ampliacin de IBM
Si especifica la instruccin EJECT en el programa, la prxima instruccin fuente se
imprime en la parte superior de la pgina siguiente en el listado del compilador.
Esta instruccin puede escribirse en cualquier lugar del rea A o rea B y debe
ser la nica instruccin en la lnea.
La instruccin SKIP1/2/3 origina la insercin en el listado del compilador de unas
lneas en blanco. Una instruccin SKIP1/2/3 puede escribirse en cualquier lugar
del rea A o B. Debe ser la nica instruccin de la lnea.
SKIP1 inserta una sola lnea en blanco (doble espacio)
SKIP2 inserta dos lneas en blanco (triple espacio).
SKIP3 inserta tres lneas en blanco (espacio cudruple)
Cada una de las instrucciones SKIP anteriores origina una sola insercin de una,
dos o tres lneas.
Una instruccin TITLE coloca un ttulo en cada pgina indicada.
Las instrucciones fuente COBOL se pueden listar o suprimir de forma selectiva utilizando las instrucciones *CONTROL, *CBL o COPY:
*CONTROL NOSOURCE y *CBL NOSOURCE suprimen el listado de las instrucciones fuente.
*CONTROL SOURCE y *CBL SOURCE continan el listado de las instrucciones fuente.
Una instruccin COPY que lleva la frase SUPPRESS suprime el listado de instrucciones copiadas. Por su duracin, esta instruccin prevalece sobre cualquier instruccin *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.
Consulte la publicacin COBOL/400 Reference para obtener ms informacin
sobre las instrucciones EJECT, SKIP1/2/3, *CONTROL, *CBL, COPY y TITLE.
Fin de Ampliacin de IBM

Caracteres de Separacin de la Hora


EL parmetro TIMSEP de los mandatos relacionados con el trabajo (por ejemplo
CHGJOB) especifica el carcter de separacin de tiempo que se utiliza en las indicaciones de la hora que aparecen en los listados del compilador. Si el valor
TIMSEP no est, el valor del sistema QTIMSEP se utiliza por omisin.

Captulo 3. Compilacin de un Programa

39

Visualizacin del Listado del Compilador Utilizando el SEU


El Programa de Utilidad de Entrada Fuente (SEU) permite examinar el contenido
del listado del compilador en una cola de salida. Es posible revisar los resultados
de una compilacin anterior y hacer a la vez los cambios necesarios en el cdigo
fuente. La Figura 5 muestra una pantalla dividida del SEU que permite examinar
el listado de una estacin de trabajo.

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. Clusula
.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)
F6=Mover lnea de divisin F19=Izquierda F2=Derecha
F21=Mandatos del sistema
F24=Ms teclas
Se ha encontrado error de sintaxis.

Figura 5. Pantalla Dividida de Editar/Examinar del SEU

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 lnea de mandatos del SEU.
Para obtener informacin completa sobre cmo examinar un listado del compilador,
consulte el manual SEU Gua del Usuario y Manual de Consulta.

Programa y Listado Ejemplo


Las siguientes pginas muestran las opciones del compilador y el listado fuente
que el programa ejemplo ha producido. En el texto siguiente se incluyen las referencias a las tablas. Estas referencias estn indicadas por la impresin de letras
en blanco en un fondo oscuro, por ejemplo (.Z/). Las letras invertidas del texto
corresponden a las letras encontradas en las tablas.

Resumen de Mandatos
Este resumen, que se obtiene despus de la compilacin, lista todas las opciones
especificadas en el mandato CRTCBLPGM. Consulte el apartado Utilizacin del
Mandato Crear Programa COBOL (CRTCBLPGM) en la pgina 15 para obtener
ms informacin sobre las opciones definidas por el usuario.

40

COBOL/400 Gua del usuario

5763CB1 V3RM5 1
Programa . . . . . . . . . . . . .
Biblioteca . . . . . . . . . . .
Archivo fuente . . . . . . . . . .
Biblioteca . . . . . . . . . . .
Miembro fuente . . . . . . . . . .
Nivel de gravedad de generacin .
"Descripcin" del texto. . . . . .
Opciones de listado fuente . . . .
Opciones de generacin . . . . . .
Opciones de conversin . . . . . .
Lmite de mensaje:
Cantidad de mensajes.. . . . . .
Gravedad lmite de mensaje
. .
Imprimir archivo. . . . . . . . .
Biblioteca . . . . . . . . . . .
Sealizacin FIPS. . . . . . . . .
Sealizacin SAA . . . . . . . . .
Opciones de visualizacin ampliada
Gravedad de sealizacin . . . . .
Sustituir programa . . . . . . . .
Release de destino . . . . . . . .
Perfil de usuario. . . . . . . . .
Autorizacin . . . . . . . . . . .
Compilador . . . . . . . . . . . .

IBM SAA COBOL/4


TESTER/SAMPLE
. :
SAMPLE
. :
TESTER
. :
QLBLSRC
. :
TESTER
. :
SAMPLE
3/27/94 11:1:34
. :
29
. :
\BLANK
. :
\NONE
. :
\NONE
. :
\NONE
.
.
.
.
.
.
.
.
.
.
.
.
.

:
:
:
:
:
:
:
:
:
:
:
:
:

AS4SYS

3/27/94 11:1:51

Pgina

\NOMAX
29
QSYSPRT
\LIBL
\NOFIPS \NOSEG \NODEB \NOOBSOLETE
\NOFLAG

\YES
\CURRENT
\USER
\LIBCRTAUT
IBM SAA COBOL/4

Figura 6. Listado de Resumen de Mandatos

Identificacin de las Opciones Activas


Si se especifica, la instruccin PROCESS se imprime en primer lugar. La Figura 7
muestra una lista de todas las opciones activas para la compilacin del programa
ejemplo: las opciones especificadas en el mandato CRTCBLPGM, una vez modificadas por la instruccin PROCESS. Las opciones del compilador se listan al
comienzo de cada salida del compilador cuando se especifica el parmetro
OPTIONS.

Captulo 3. Compilacin de un Programa

41

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPLE
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 PROCESS OPTIONS, SAAFLAG, SOURCE, MAP, XREF,
2 2
FLAG(), MINIMUM, VBSUM.
Opciones del Compilador COBOL Activas
OPTIONS
SOURCE
XREF
MAP
VBSUM
NONUMBER
NOSEQUENCE
GEN
GENLVL(29)
FLAG( )
MINIMUM
NOSEG
NODEB
NOOBSOLETE
SAAFLAG
QUOTE
NOSECLVL
NOSRCDBG
NOLSTDBG
PRINT
PRTCORR
Opciones de Generacin COBOL Activas
NOLIST
UNREF
RANGE
NOATR
NOXREF
NODUMP
NOPATCH
NOOPTIMIZE
NODDSFILLER
NOSYNC
NOCRTF
NODUPKEYCHK
STDERR
NOEXTACCDSP
NOINZDLT
NOFS9MTOM
NOBLK
STDINZ
FS21DUPKY
Opciones de Conversin COBOL Activas
NOVARCHAR
NODATETIME
NOGRAPHIC

AS4SYS 3/27/94 11:1:51


S NOMCOPIA
FECH/CAM
3/27/94

Pgina

Figura 7. Lista de Opciones Activas

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 opcin
NOSOURCE. Despus de la pgina en la que aparece listado el prrafo
PROGRAM-ID, todas las pginas de salida del compilador tienen el nombre del
identificador de programa listado en el encabezamiento antes del nombre del
sistema.

42

COBOL/400 Gua del usuario

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPLE
AS4SYS 3/27/94 11:1:51
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
FECH/CAM
.A/
.B/
.C/
.D/
.E/
3 3 IDENTIFICATION DIVISION.
4 4 PROGRAM-ID.
SAMPLE.
5 5
AUTHOR.
PROGRAMMER NAME.
6 6
INSTALLATION. COBOL DEVELOPMENT CENTRE.
7 7
DATE-WRITTEN. 11/27/87.
8 8
DATE-COMPILED. 3/27/94 11:1:51
.
9 9 ENVIRONMENT DIVISION.
1 1 CONFIGURATION SECTION.
11 11 SOURCE-COMPUTER. IBM-AS4.
3/27/94
12 12 OBJECT-COMPUTER. IBM-AS4.
3/27/94
13 13 INPUT-OUTPUT SECTION.
14 14 FILE-CONTROL.
15 15
SELECT FILE-1 ASSIGN TO DISK-SAMPLE.
16 16 DATA DIVISION.
17 17 FILE SECTION.
18 18 FD FILE-1
19 19
LABEL RECORDS ARE STANDARD
2 2
RECORD CONTAINS 2 CHARACTERS
21 21
DATA RECORD IS RECORD-1.
22 22 1 RECORD-1.
23 23
2 FIELD-A
PIC X(2).
24 24 WORKING-STORAGE SECTION.
25 25 1 FILLER.
26 26
5 KOUNT
PIC S9(2) COMP-3.
27 27
5 LETTERS
PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
28 28
5 ALPHA REDEFINES LETTERS
29 29
PIC X(1) OCCURS 26 TIMES.
3 3
5 NUMBR
PIC S9(2) COMP-3.
31 31
5 DEPENDENTS
PIC X(26) VALUE "12341234123412341234".
32 32
5 DEPEND REDEFINES DEPENDENTS
33 33
PIC X(1) OCCURS 26 TIMES.
34 34 COPY WRKRCD.
35 +1 1 WORK-RECORD.
WRKRCD
36 +2
5 NAME-FIELD
PIC X(1).
WRKRCD
37 +3
5 FILLER
PIC X(1) VALUE SPACE.
WRKRCD
38 +4
5 RECORD-NO
PIC S9(3).
WRKRCD
39 +5
5 FILLER
PIC X(1) VALUE SPACE.
WRKRCD
4 +6
5 LOCATION
PIC A(3) VALUE "NYC".
WRKRCD
41 +7
5 FILLER
PIC X(1) VALUE SPACE.
WRKRCD
42 +8
5 NO-OF-DEPENDENTS
WRKRCD
43 +9
PIC X(2).
WRKRCD
44 +1
5 FILLER
PIC X(7) VALUE SPACES.
WRKRCD
45 35 77 WORKPTR USAGE POINTER.
36\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
37\ EL SIGUIENTE PRRAFO ABRE EL ARCHIVO DE SALIDA QUE\
38\ HA DE CREARSE E INICIALIZA LOS CONTADORES
\
39\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
46 4 PROCEDURE DIVISION.
41 STEP-1.
47 42
OPEN OUTPUT FILE-1.
48 43
MOVE ZERO TO KOUNT, NUMBR.
44\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
45\ LOS 3 PRRAFOS SIGUIENTES CREAN INTERNAMENTE LOS \
46\ REGISTROS QUE HA DE CONTENER EL ARCHIVO, LOS
\
47\ GRABA EN DISCO Y LOS VISUALIZA
\
48\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
49 STEP-2.
49 5
ADD 1 TO KOUNT, NUMBR.
5 51
MOVE ALPHA (KOUNT) TO NAME-FIELD.
51 52
MOVE DEPEND (KOUNT) TO NO-OF-DEPENDENTS.
52 53
MOVE NUMBR
TO RECORD-NO.
54 STEP-3.
53 55
DISPLAY WORK-RECORD.
54 56
WRITE RECORD-1 FROM WORK-RECORD.
57 STEP-4.

Pgina

Figura 8 (Parte 1 de 2). Ejemplo de Listado Fuente COBOL/400

Captulo 3. Compilacin de un Programa

43

55

56
57

58
59
6
61
62
63
64

58
PERFORM STEP-2 THRU STEP-3 UNTIL KOUNT IS EQUAL TO 26.
59\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
6\ EL SIGUIENTE PRRAFO CIERRA EL ARCHIVO ABIERTO
\
61\ PARA SALIDA Y VUELVE A ABRIRLO PARA ENTRADA
\
62\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
63 STEP-5.
64
CLOSE FILE-1.
65
OPEN INPUT FILE-1.
66\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
67\ LOS SIGUIENTES PRRAFOS LEEN HACIA ATRS EL
\
68\ ARCHIVO Y SELECCIONAN EMPLEADOS SIN SUBORDINADOS \
69\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
7 STEP-6.
71
READ FILE-1 RECORD INTO WORK-RECORD
72
AT END GO TO STEP-8.
73 STEP-7.
74
IF NO-OF-DEPENDENTS IS EQUAL TO ""
75
MOVE "Z" TO NO-OF-DEPENDENTS.
76
GO TO STEP-6.
77 STEP-8.
78
CLOSE FILE-1.
79
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

Figura 8 (Parte 2 de 2). Ejemplo de Listado Fuente COBOL/400

La Figura 8 muestra los siguientes campos:

44

.A/

Nmero de instruccin generado por el compilador: Los nmeros aparecen


a la izquierda del listado del programa fuente. Estos nmeros tienen referencia en todos los listados de salida del compilador excepto en los listados de mensajes FIPS. Un nmero de instruccin puede abarcar varias
lneas y una lnea puede contener ms de una instruccin.

.B/

Nmero de Referencia: Los nmeros aparecen a la izquierda de las instrucciones fuente. Los nmeros que aparecen en este campo y el encabezamiento de columnas (mostrado como SEQNBR en este listado) se
determinan mediante una opcin especificada en el mandato CRTCBLPGM
o en la instruccin PROCESS, como se muestra en la tabla siguiente:
Opcin

Encabezamiento

Origen

NONUMBER
NUMBER
LINENUMBER

SEQNBR
NUMBER
LINNBR

Nmeros de secuencia de archivo fuente


Nmeros de secuencia estndar COBOL
Nmeros se secuencia generados por el compilador

.C/

Columna del indicador de error de secuencia: Una S en esta columna


indica que la lnea est fuera de la secuencia. La comprobacin de
secuencia se realiza en el campo de nmero de secuencia slo si se especifica la opcin SEQUENCE.

.D/

Copyname: Copyname, tal como se especifica en la instruccin COPY


COBOL, se lista para todos los registros incluidos en el programa fuente
mediante esa instruccin COPY. Si se utiliza la frase
DDS-ALL-FORMATS, aparece el nombre <--ALL-FMTS debajo de
COPYNAME.

.E/

Campo cambiar/fecha: Aqu se lista la fecha en que se ha modificado la


lnea por ltima vez.

COBOL/400 Gua del usuario

Utilizacin de Verbos mediante el Listado de la Cuenta


La Figura 9 muestra la lista alfabtica que se produce con todos los verbos utilizados en el programa fuente. Tambin se incluye un contador para saber cuntas
veces se ha utilizado un verbo. El listado se produce cuando se especifica la
opcin VBSUM.
5763CB1 V3RM5
VERB
ADD
CLOSE
DISPLAY
GO
IF
MOVE
OPEN
PERFORM
READ
STOP
WRITE

Uso de Verbos COBOL AS/4 por Recuento


TESTER/SAMPLE
AS4SYS
COUNT
1
2
1
2
1
5
2
1
1
1
1
\ \ \ \ \
F I N
D E
V E R B O
P O R
R E C U E N T O
\ \ \ \ \

3/27/94 11:1:51

Pgina

Figura 9. Utilizacin de Verbos mediante el Listado de la Cuenta

Correlacin de la Divisin de Datos


La correlacin de la Divisin de Datos se lista cuando se especifica la opcin MAP.
Contiene informacin sobre los nombres en el programa fuente COBOL. Al final
de la correlacin de la Divisin de Datos se da el nmero de bytes necesarios para
la Seccin de Almacenamiento de Trabajo y la Seccin de Archivos.
5763CB1 V3RM5 1
INST NIV NOMBRE FUENTE
.F/ .G/
.H/
18 FD FILE-1

Mapa de Divisin de Datos COBOL AS/4


TESTER/SAMPLE
AS4SYS 3/27/94 11:1:51
SECCIN
DISP
LONG
TIPO
I-NOMBRE
ATRIBUTOS
.I/
.J/
.K/
.L/
.M/
.N/
FS
.F1
DEVICE DISK, ORGANIZATION SEQUENTIAL,
ACCESS SEQUENTIAL, RECORD CONTAINS 2
CHARACTERS, LABEL RECORDS STANDARD
22 1 RECORD-1
FS
2 GROUP .D633C
23 2 FIELD-A
FS
2 AN
.D63AE
25 1 FILLER
WS
56 GROUP .D642
26 2 KOUNT
WS
2 PACKED .D649
27 2 LETTERS
WS 2
26 AN
.D6512 VALUE
28 2 ALPHA
WS 2
1 AN
.D65B REDEFINES .D6512, DIMENSION(26)
3 2 NUMBR
WS 28
2 PACKED .D6632
31 2 DEPENDENTS
WS 3
26 AN
.D66B4 VALUE
32 2 DEPEND
WS 3
1 AN
.D6754 REDEFINES .D66B4, DIMENSION(26)
35 1 WORK-RECORD
WS
19 GROUP .D67D6
36 2 NAME-FIELD
WS
1 AN
.D684C
37 2 FILLER
WS 1
1 AN
.D68C VALUE
38 2 RECORD-NO
WS 2
3 ZONED .D693C
39 2 FILLER
WS 5
1 AN
.D69C2 VALUE
4 2 LOCATION
WS 6
3 A
.D7A98 VALUE
41 2 FILLER
WS 9
1 AN
.D7B2 VALUE
42 2 NO-OF-DEPENDENTS
WS 1
2 AN
.D7B9C
44 2 FILLER
WS 12
7 AN
.D7C16 VALUE
45 77 WORKPTR
WS
16 POINTR .D7C92
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 \ \ \ \ \

Pgina

Figura 10. Correlacin de la Divisin de Datos

La correlacin de Divisin de Datos muestra los campos siguientes:


.F/

Nmero de instruccin: El nmero de instruccin generada por el compilador dnde se ha definido el tem de los datos se lista para cada tem de
datos en la correlacin de Divisin de Datos.

Captulo 3. Compilacin de un Programa

45

.G/

Nivel de tem de datos: Aqu se lista el nmero del nivel de tem de datos,
como se especifica en el programa fuente. Los nombres de ndice se identifican con una IX en el nmero de nivel y un campo de tipo en blanco.

.H/

Nombre fuente: Aqu se lista el nombre de los datos, como se especifica


en el programa fuente.

.I/

Seccin: La seccin en la que se ha definido el tem se muestra aqu


mediante la utilizacin de los cdigos siguientes:
FS
WS
LS
SM
SR

Seccin de Archivo
Seccin de Almacenamiento de Trabajo
Seccin de Enlace
Seccin Clasificar/Fusionar
Registro Especial

.J/

Desplazamiento: Aqu se ofrece el desplazamiento del tem, en bytes,


desde el tem de grupo de nivel 01.

.K/

Longitud: Aqu se lista la longitud decimal del tem.

.L/

Tipo: Se muestra aqu el tipo de datos para el tem mediante la utilizacin


de los cdigos siguientes:
GROUP

tem de grupo

A
AN
ANE
INDEX
BOOLN
ZONED
PACKED

Alfabtico
Alfanumrico
Alfanumrico editado
tem de datos de ndice (USAGE INDEX)
Booleano
Decimal con Zona (decimal externo)
Decimal empaquetado (decimal interno) (USAGE COMP,
COMP-3 o PACKED-DECIMAL)
Binario (USAGE COMP-4 o BINARY)
Numrico editado
tem de datos del puntero (USAGE POINTER)

BINARY
NE
POINTR

.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 nmero de dos dgitos 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
dgitos 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 informacin siguiente:
Tipo de dispositivo
ORGANIZATION
ACCESS MODE
Informacin BLOCK CONTAINS
Informacin RECORD CONTAINS
Informacin LABEL
Se indica RERUN

46

COBOL/400 Gua del usuario

Se
Se
Se
Se

indica
indica
indica
indica

SAME AREA
CODE-SET
SAME RECORD AREA
LINAGE.

Para los tems de datos, los atributos indican si se ha especificado


para el tem la siguiente informacin:
REDEFINES
VALUE
JUSTIFIED
SYNCHRONIZED
BLANK WHEN ZERO
SIGN IS LEADING
SIGN IS LEADING SEPARATE
SIGN IS SEPARATE
INDICATORS.
Para los tems de tabla, las dimensiones del elemento se listan aqu en
el formato DIMENSION (nn). Para cada dimensin, se da un valor
OCCURS mximo. Cuando una dimensin es una variable, se lista
como tal, dando los valores OCCURS ms alto y ms bajo.

Mensajes FIPS
Los mensajes FIPS en la Figura 11, se listan cuando se especifica el parmetro
FLAGSTD. Consulte la pgina 25 para obtener ms informacin sobre cmo especificar la opcin para la opcin FIPS. Slo se listan los mensajes para el
subconjunto FIPS solicitado, los mdulos opcionales y/o los elementos obsoletos.
Nota: Se proporciona el nmero de secuencia y columna cada vez que se emite
el mensaje.
5763CB1 V3RM5 1
Mensajes FIPS COBOL AS/4
FIPS-ID
DESCRIPCIN Y NMEROS SECUENCIA SEALIZADOS.P/
.O/
LBL82
Los siguientes tems que no se ajustan al estndar son
LBL821
Instruccin COPY.
34 8
LBL83
Los siguientes tems que no se ajustan al estndar son
LBL833
Prrafo DATE-COMPILED.
8 1
LBL85
Los siguientes tems que no se ajustan al estndar son
LBL854
Nombre de asignacin en clusula ASSIGN.
15 36
LBL8518
USAGE IS COMPUTATIONAL-3.
26 36
3 36
LBL852
USAGE IS POINTER.
35 26
LBL8561
Instruccin COPY con bliblioteca por omisin asumida.
34 19
7 violaciones FIPS sealizadas. .R/
\ \ \
F I N
D E
M E N S A J E S
F I P S
C O B O

TESTER/SAMPLE

AS4SYS

3/27/94 11:1:51

Pgina

vlidos a un nivel FIPS intermedio o superior.


vlidos a un nivel FIPS o superior. .Q/
definidos por IBM o son extensiones IBM. .Q/

\ \ \

Figura 11. Mensajes FIPS

Captulo 3. Compilacin de un Programa

47

Los mensajes FIPS estn compuestos por los campos siguientes:


.O/

FIPS-ID: Este campo lista el nmero del mensaje FIPS.

.P/

Descripcin y nmeros de referencia sealizados: Este campo lista una


descripcin de la condicin sealizada, seguido por una lista de los
nmeros de referencia del programa fuente donde se encuentra esta condicin.
El tipo de nmeros de referencia utilizados y sus nombres en el encabezamiento (mostrados como SEQUENCE NUMBERS en este listado) se
determinan mediante una opcin especificada en el mandato CRTCBLPGM
o en la instruccin PROCESS, tal como se muestra en la tabla siguiente:
Opcin

Encabezamiento

NONUMBER

DESCRIPCION Y NUMEROS DE SECUENCIA


SEALIZADOS
DESCRIPCIN Y NMEROS SUMINISTRADOS POR
USUARIO SEALIZADOS
DESCRIPCIN Y NMEROS DE LNEAS SEALIZADOS

NUMBER
LINENUMBER

.Q/

tems agrupados por nivel: Estos encabezamientos subdividen los mensajes FIPS por nivel y categora.

.R/

Violaciones FIPS sealizadas: El nmero total de violaciones FIPS


sealizadas se incluye al final del listado FIPS.

Mensajes SAA
La Figura 12 muestra los mensajes SAA que se listan cuando se especifica la
opcin de sealizacin SAA. Consulte el apartado Parmetro SAAFLAG en la
pgina 26 o Uso de la Instruccin PROCESS para Especificar las Opciones del
Compilador en la pgina 33 para obtener ms informacin sobre cmo especificar
esta opcin.
5763CB1 V3RM5 1
Mensajes COBOL SAA
TESTER/SAMPLE
MSGID
DESCRIPCIN, NMEROS DE SECUENCIA Y NMEROS DE COLUMNA SEALIZADOS

AS4SYS

3/27/94 11:1:51

Pgina 9

LBL88
LBL881

Los siguientes tems se han sealizado como no portables por otros sistemas COBOL SAA.
Las opciones APOST,NUMBER,SEQUENCE,GRAPHIC,NOCRTF,NODUPKEYCHK,NOSYNC y EXTACCDSP no son COBOL SAA.
1 8
LBL889
Instruccin PROCESS.
1 8
LBL8843
USAGE IS POINTER.
35 26
Se han sealizado 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 \ \ \

Figura 12. Mensajes SAA

Para obtener ms informacin sobre la sealizacin SAA, consulte el apartado


Sealizacin SAA en la pgina 349.

48

COBOL/400 Gua del usuario

Listado de Referencias Cruzadas


La Figura 13 muestra el listado de referencias cruzadas que se genera cuando se
especifica la opcin XREF. Proporciona una lista de todas las referencias de datos
y las referencias de nombres de procedimientos, por nmero de instruccin, dentro
del programa fuente.
5763CB1 V3RM5 1
Listado de referencias cruzadas COBOL AS/4
TESTER/SAMPLE
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 \ \

AS4SYS

3/27/94 11:1:51

Pgina 1

Figura 13. Listado de Referencias Cruzadas

El listado de referencias cruzadas muestra los siguientes campos:


.S/

Campo de nombres: Aqu se lista el nombre de datos o el nombre de


procedimiento referenciado. Todos los nombres de procedimiento se
sealizan con un * antes del nombre. Los nombres se listan por orden
alfabtico.

.T/

Campo definido: Aqu se lista el nmero de instruccin donde se ha definido el nombre dentro del programa fuente.

.U/

Campo de referencias: Todos los nmeros de instrucciones se listan en la


misma secuencia en que aparece la referencia al nombre en el programa
fuente. Un * que sigue a un nmero de secuencia indica que el tem se ha
modificado en esa instruccin.

Mensajes
La Figura 14 muestra los mensajes que se generan durante la compilacin del programa.

Captulo 3. Compilacin de un Programa

49

5763CB1 V3RM5 1
Mensajes COBOL AS/4
TESTER/SAMPLE
INST
.X/
\.V/
18 MSGID: LBL65 GRAVEDAD: NUMSEC: 18 .W/
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'FILE-1' se
ejecutar por cdigo generado por compilador. .Y/
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
.Z/
1
1

Registros fuente ledos . . . . . . :


79
Registros de copia ledos . . . . . :
1
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad emitido ms alto:

LBL91 Programa SAMPLE creado en biblioteca TESTER.


\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

AS4SYS

3/27/94 11:1:51

Pgina 11

Figura 14. Mensajes de Diagnstico

Los campos que se muestran son:


.V/

Nmero de instruccin: Este campo lista el nmero de instrucciones generadas por el compilador asociadas con la instruccin del programa fuente
para la que se ha emitido el mensaje. 1

.W/

Nmero de referencia: Aqu se emite el nmero de referencia. 1 Los


nmeros que aparecen en este campo y el encabezamiento de la columna
(aqu se muestra como SEQNBR) vienen determinados por una opcin
especificada en el mandato CRTCBLPGM o en la instruccin PROCESS,
tal como se muestra en la tabla siguiente:
Opcin

Encabezamiento

Origen

NONUMBER
NUMBER
LINENUMBER

SEQNBR
NUMBER
LINNBR

Nmeros de secuencia de archivo fuente


Nmeros de secuencia suministrados por el usuario
Nmeros se secuencia generados por el compilador

Cuando se emite un mensaje para un registro desde un archivo de copia,


el nmero vienen precedido por el signo +.
.X/

MSGID y Nivel de Gravedad: Estos campos contienen el nmero de


mensaje y el nivel de gravedad asociado. Los niveles de gravedad se
definen de la manera siguiente:

1
2
3
4
5

.Y/

Informativo
Aviso
Error
Error Grave
Irrecuperable (generalmente error del usuario)
Irrecuperable (generalmente error del compilador)

Mensaje: El mensaje identifica la condicin e indica la accin emprendida


por el compilador.

El nmero de instrucciones y el nmero de referencia no aparecen en ciertos mensajes que hacen referencia a tems desaparecidos. Por ejemplo, si el prrafo PROGRAM-ID no aparece, el mensaje LBL0031 aparecer en el listado sin ninguna instruccin
ni nmero de referencia listado.

50

COBOL/400 Gua del usuario

.Z/

Estadsticas de mensajes: Este campo lista el numero total de mensajes y


el nmero de mensajes por nivel de gravedad.
Los totales listados son el nmero de mensajes que genera el compilador
para cada gravedad y no siempre son el nmero listado. Por ejemplo, si
se especifica FLAG(10), no se lista ningn mensaje de gravedad menor de
10. Las cuentas, no obstante, indican el nmero que debera imprimirse si
no se hubiera suprimido.

Captulo 3. Compilacin de un Programa

51

52

COBOL/400 Gua del usuario

Captulo 4. Ejecucin del Programa en COBOL


Este captulo proporciona la informacin necesaria para ejecutar el programa en
COBOL/400.
Para ello, las formas ms usuales consisten en la utilizacin de:

Un mandato CALL del lenguaje de control (CL)


Una instruccin CALL de COBOL
Un programa de men orientado a la aplicacin
La emisin de un mandato creado por el usuario.

Un mandato CALL del lenguaje de control puede formar parte de un trabajo por
lotes, entrarlo un usuario de la estacin de trabajo en forma interactiva o incluirlo
en un programa CL. Un ejemplo del mandato CALL sera CALL NOMINA.
NOMINA es el nombre de un programa COBOL que se llama y se ejecuta.
Un programa COBOL puede llamar a otro programa con la instruccin CALL de
COBOL. (Consulte la seccin Instruccin CALL de la publicacin COBOL/400
Reference para ms informacin).
Otra forma de ejecutar el programa COBOL es mediante un men orientado a la
aplicacin. El usuario de la estacin de trabajo puede seleccionar una opcin de
un men y llamar al programa pertinente. La figura siguiente ilustra un ejemplo de
un men orientado a la aplicacin.

MEN DEL DEPARTAMENTO DE NMINAS


1.
2.
3.
4.

Consultar el maestro de empleados


Modificar el maestro de empleados
Aadir nuevo empleado
Volver

Opcin:____

Figura 15. Ejemplo de un Men de Aplicacin

El men mostrado en esta figura normalmente se visualiza mediante un programa


de lenguaje de control en el que cada opcin llama a un programa COBOL distinto.
El propio usuario puede crear tambin un mandato para ejecutar un programa en
COBOL utilizando una definicin de mandato. Una definicin de mandato es un
objeto que contiene la definicin de un mandato (incluido el nombre del mandato,
las descripciones de parmetro y la informacin de control de validez) e identifica
al programa que efecta la funcin solicitada por el mandato. El identificador del
objeto que el sistema reconoce es *CMD.
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 publicacin CL Gua del Programador para ms informacin acerca de
la utilizacin de la definicin de mandato.
Copyright IBM Corp. 1994

53

Cuando un programa COBOL finaliza normalmente, el sistema devuelve el control


al llamador. El llamador puede ser un usuario de la estacin de trabajo, un programa en lenguaje de control (como el programa de manejo del men) o cualquier
otro programa en COBOL.
Si un programa COBOL finaliza de forma anmala durante el tiempo de ejecucin,
se emite el mensaje LBE9001
Error id-mensaje provoc terminacin del programa
Un programa CL puede supervisar esta excepcin utilizando el mandato Supervisar
Mensaje (MONMSG). Consulte la publicacin CL Reference para ms informacin
acerca de los mandatos del lenguaje de control.
Si un programa finaliza por una razn que no sea la utilizacin de la instruccin
STOP o finaliza de forma anmala al trmino del programa, el cdigo de retorno se
establece en 2. Consulte los mandatos RTVJOBA y DSPJOB en la publicacin CL
Gua del Programador para ms informacin acerca de los cdigos de retorno.
Cuando se ejecuta un trabajo por lotes que utiliza la instruccin ACCEPT, los datos
de entrada se toman de la corriente de trabajos. Estos datos deben colocarse
inmediatamente despus del mandato CALL para el programa en COBOL. Es responsabilidad del usuario la solicitud (mediante varias instrucciones ACCEPT) de la
misma cantidad de datos disponibles. Consulte la seccin Instruccin ACCEPT
de la publicacin COBOL/400 Reference para obtener ms informacin.
Nota: Si se solicitan ms datos de los disponibles, el mandato CL que sigue a los
datos se trata como dato de entrada. Si hay ms datos disponibles de los
que se solicitan, cada lnea de datos de ms se trata como un mandato CL.
En cada uno de estos casos, pueden producirse resultados no deseados.

Respuesta a Mensajes de Consulta en Tiempo de Ejecucin


Cuando se ejecuta un programa COBOL, pueden generarse mensajes de consulta
en tiempo de ejecucin. Los mensajes necesitan una respuesta del usuario antes
de que el programa contine ejecutndose.
Se puede aadir los mensajes de consulta a una lista de respuestas del sistema
para proporcionar respuestas automticas a los mensajes. Las respuestas para
estos mensajes pueden especificarse de forma individual o general. Este mtodo
de respuesta a mensajes de consulta es especialmente til para los programas por
lotes que, de lo contrario, necesitaran un operador para emitir las respuestas.
Los siguientes mensajes de consulta de COBOL/400 pueden aadirse a la lista de
respuestas del sistema:
LBE7200
LBE7201
LBE7203
LBE7204
LBE7205
LBE7206
LBE7207
LBE7208
LBE7209
LBE7210
LBE7211

54

COBOL/400 Gua del usuario

LBE7604.
La lista de respuestas slo se utiliza cuando un trabajo que tiene especificado el
atributo de respuesta de mensajes de consulta (INQMSGRPY) como
INQMSGRPY(\SYSRPYL) enva un mensaje de consulta.
El parmetro INQMSGRPY se produce en los mandatos de lenguaje de control
siguientes:

Cambiar Trabajo (CHGJOB)


Cambiar Descripcin de Trabajo (CHGJOBD)
Crear Descripcin de Trabajo (CRTJOBD)
Someter Trabajo (SBMJOB).

Puede seleccionar una de estas cuatro modalidades de respuesta especificando


uno de los siguientes valores para el parmetro INQMSGRPY:
SAME

No se producen cambios en la forma de enviar respuestas a mensajes de consulta

RQD

Todos los mensajes de consulta requieren una respuesta por parte


del receptor de dichos mensajes

DFT

Se emite una respuesta por omisin

SYSRPYL

La lista de respuestas del sistema se comprueba para una entrada de


lista de respuestas coincidente. Si se produce la coincidencia, se
utiliza el valor de respuesta en esa entrada. Si no hay entrada para
ese mensaje de consulta, se necesita una respuesta.

Puede utilizar el mandato Aadir Entrada de Lista de Respuestas (ADDRPYLE)


para aadir las entradas en la lista de respuestas del sistema, o el mandato Trabajar con Entrada de Lista de Respuestas (WRKRPYLE) para cambiar o eliminar
entradas en la lista de respuestas del sistema. Vea la publicacin CL Reference
para ms detalles acerca de los mandatos ADDRPYLE y WRKRPYLE. Tambin
podr responder a mensajes de consulta en tiempo de ejecucin con un manejador
de errores que haya definido. Para ms informacin acerca de las API de manejo
de errores, consulte la publicacin System Programmers Interface Reference.

Captulo 4. Ejecucin del Programa

55

56

COBOL/400 Gua del usuario

Captulo 5. Depuracin del Programa


El lenguaje COBOL/400 y el sistema operativo OS/400 proporciona funciones para
la depuracin de los programas desarrollados por el usuario. Este captulo describe aquellas funciones que le permitirn depurar los programas.
Funciones OS/400

Funciones COBOL/400

Puntos de interrupcin
Rastreos

Caractersticas de depuracin
Vuelco con formato

Las funciones OS/400 le permitirn probar programas a la vez que proteger los
archivos de produccin; podr, asimismo, observar y depurar operaciones a
medida que se ejecuta un programa. No se necesita ningn cdigo fuente especial
para utilizar las funciones OS/400.
Las funciones COBOL pueden utilizarse independientemente de las funciones
OS/400 o en combinacin con ellas para:
Depurar un programa
Producir un vuelco con formato de los contenidos de los campos, estructuras
de datos, matrices y tablas.
El cdigo fuente es necesario para la utilizacin de las caractersticas de depuracin de COBOL y la posibilidad de vuelco con formato. Un vuelco con formato
tambin puede obtenerse mediante una respuesta del usuario al mensaje en
tiempo de ejecucin.
El contenido de OPEN-FEEDBACK y de I-O-FEEDBACK proporciona informacin
de depuracin adicional. El mtodo para la obtencin de esta informacin se describe ms adelante en este captulo, concretamente en el apartado Estado de
Archivos y reas de Realimentacin en la pgina 108.
Mientras prueba los programas, asegrese de que la lista de bibliotecas haya cambiado, para direccionar los programas a una biblioteca de prueba que contenga
datos de prueba; de esta manera, ningn dato real existente se ver afectado.
Para evitar que los archivos de base de datos en bibliotecas de produccin se
modifiquen de manera no intencionada, puede especificar UPDPROD(*NO) en el
mandato Arrancar Depuracin (STRDBG) o utilizando el mandato Cambiar Depuracin (CHGDBG). Vea la publicacin CL Reference para ms informacin.
Nota: Consulte el manual CL Gua del Programador para los mandatos CL necesarios para los programas de prueba y depuracin.
No hay instrucciones especiales para la prueba en el programa que se va a probar.
El programa puede ejecutarse de forma normal sin modificacin alguna. Todas las
funciones de prueba se especifican en el trabajo que contiene el programa, no en
el mismo programa.
Las funciones de prueba slo se aplican al trabajo en el que se especifiquen. Un
programa puede utilizarse simultneamente en dos trabajos: uno que est en un
entorno de prueba y otro que est en un entorno normal de proceso.

Copyright IBM Corp. 1994

57

Las funciones de prueba le permitirn observar las operaciones que se realizan


mientras el programa se ejecuta. Estas funciones incluyen la utilizacin de puntos
de interrupcin y de rastreos. (Consulte los apartados Utilizacin de Puntos de
Interrupcin en la pgina 59 y Utilizacin de un Rastreo en la pgina 66 para
ms informacin).

Cmo Evitar Errores de Cdigos Comunes


Los errores que ms frecuentemente cometen los programadores en COBOL se
pueden dividir en dos categoras: errores de tiempo de compilacin y errores de
tiempo de ejecucin.
El compilador puede detectar los errores al compilar el programa fuente. Aunque
el compilador hace correcciones basndose en ciertas suposiciones sobre los
errores que encuentra, es preciso que el usuario corrija el fuente y compile de
nuevo si tiene errores.
Los errores de codificacin comunes incluyen:
Descripciones de registros no coincidentes con archivos descritos externamente
Archivos de copia no encontrados
Faltas de ortografa
Puntuacin defectuosa, especialmente la falta de puntos
Sintaxis incorrecta o incompleta
Mala utilizacin de palabras reservadas.
A continuacin viene una serie de errores que slo aparecen cuando se ejecuta el
programa:
Imposibilidad de hacer coincidir la descripcin 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 descripcin es incorrecta) o un error causado por la persona que ha creado
los registros que lee el programa. (Por ejemplo, la descripcin es correcta,
pero se han entrado uno o ms registros de forma incorrecta.)
Traslado de un tem de datos cuyo subndice o ndice es demasiado grande,
es negativo o es 0. Este traslado puede recubrir y destruir parte del cdigo o
puede recoger datos defectuosos.
Olvidar la definicin de un campo de signo para tems que pueden tener
valores negativos. (En tal caso, se pierde el signo y el nmero negativo se
convierte, por error, en positivo).
Traslado de datos en un rea demasiado pequea para ellos, provocando un
truncamiento no deseado.
Olvidar inicializar los tems de datos en la seccin 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 descripcin de
datos de la Seccin de Enlace con los del llamador. O, en el programa de
llamada, la identificacin errnea 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.

58

COBOL/400 Gua del usuario

Especificacin de USAGE para un tem de datos redefinido que sea distinto del
USAGE especificado originalmente para el tem redefinido, y despus olvidarse
del cambio una vez que se haya llevado a cabo la redefinicin.
Incluir una instruccin GO TO sin nombre de procedimiento, y no inicializarlo
con una instruccin ALTER antes de que el programa en ejecucin alcance
ese punto.
No incluir las clusulas AT END o INVALID KEY o los procedimientos USE en
archivos descritos en el programa.
No hacer coincidir la descripcin de registro fuente del archivo TRANSACTION
con la descripcin de registro del formato de pantalla.

Utilizacin de Puntos de Interrupcin


Un punto de interrupcin es un nmero de instruccin o una etiqueta en el programa que detiene el proceso del programa, y pasa el control al usuario de la
estacin de trabajo o a un programa especfico. Si se utiliza un nmero de instruccin, dicho nmero puede aparecer en el listado del programa fuente COBOL. Si
utiliza una etiqueta como punto de interrupcin, la etiqueta:
Puede estar asociada con una funcin realizada por el programa COBOL. Por
ejemplo,
.OPEN
indica la funcin de abrir archivo.
Puede ser una etiqueta interna generada por el compilador del COBOL. Por
ejemplo,
.L1
indica la primera etiqueta generada internamente.
Nota: Para determinar las etiquetas generadas internamente para el programa,
utilice el parmetro GENOPT en el mandato CRTCBLPGM para obtener un listado
IRP del programa.
Cuando una instruccin de punto de interrupcin va a ejecutarse en un trabajo interactivo, el sistema visualiza el punto de interrupcin en el que el programa se ha
parado y, si se solicit, visualiza los valores de las variables de programa. Una
vez haya conseguido esta informacin (en una pantalla), puede ir a la pantalla de
Entrada de Mandatos e introducir mandatos del OS/400 para solicitar otras funciones (como por ejemplo la visualizacin o cambio de una variable, la adicin de
un punto de interrupcin o la adicin de un rastreo). Consulte la publicacin CL
Gua del Programador para ms informacin respecto a los puntos de interrupcin.
Para un trabajo por lotes, puede llamarse a un programa de punto de interrupcin
cuando se alcanza el punto de interrupcin. La informacin del punto de interrupcin se pasa al programa de punto de interrupcin.

Captulo 5. Depuracin del Programa

59

Ejemplo de un Programa que Utiliza Puntos de Interrupcin


La Figura 16 muestra un ejemplo de un programa COBOL que utiliza puntos de
interrupcin. Los siguientes mandatos OS/400 aaden puntos de interrupcin en
las instrucciones 43 y 52. El valor de la variable KOUNT se visualiza cuando se
alcanza el punto de interrupcin en la instruccin 52.
Mandatos OS/400:
STRDBG
ADDBKP
ADDBKP

TESTPRT
STMT(43)
STMT(52)
PGMVAR(KOUNT)

Los mandatos OS/400 se exponen en el manual CL Reference.


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/TESTPRT
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
TESTPRT.
3 3
AUTHOR.
PROGRAMMER NAME.
4 4
INSTALLATION. COBOL DEVELOPMENT CENTRE.
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.
1 1 OBJECT-COMPUTER. IBM-AS4.
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 "12341234123412341234".
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.

AS4SYS 3/3/94 17:5:37


NOMCOPIA
FECH/CAM

3/3/94

3/3/94
3/3/94

Figura 16 (Parte 1 de 2). Ejemplo de Programa COBOL que Utiliza Puntos de Interrupcin

60

COBOL/400 Gua del usuario

Pgina

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/TESTPRT
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
5\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
51\ LOS 3 PARRAFOS SIGUIENTES CREAN INTERNAMENTE LOS \
52\ REGISTROS QUE HA DE CONTENER EL ARCHIVO, LOS
\
53\ GRABA EN DISCO Y LOS VISUALIZA
\
54\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
55 STEP-2.
45 56
ADD 1 TO KOUNT, NUMBR.
46 57
MOVE ALPHA (KOUNT) TO NAME-FIELD.
47 58
MOVE DEPEND (KOUNT) TO NO-OF-DEPENDENTS.
48 59
MOVE NUMBR
TO RECORD-NO.
6 STEP-3.
49 61
DISPLAY WORK-RECORD.
5 62
WRITE RECORD-1 FROM WORK-RECORD.
63 STEP-4.
51 64
PERFORM STEP-2 THRU STEP-3 UNTIL KOUNT IS EQUAL TO 26.
65\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
66\ EL SIGUIENTE PARRAFO CIERRA EL ARCHIVO ABIERTO
\
67\ PARA SALIDA Y VUELVE A ABRIRLO PARA ENTRADA
\
68\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
69 STEP-5.
52 7
CLOSE FILE-1. .2/
53 71
OPEN INPUT FILE-1.
72\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
73\ LOS SIGUIENTES PARRAFOS LEEN HACIA ATRAS EL
\
74\ ARCHIVO Y SELECCIONAN EMPLEADOS SIN SUBORDINADOS \
75\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
76 STEP-6.
54 77
READ FILE-1 RECORD INTO WORK-RECORD
55 78
AT END GO TO STEP-8.
79 STEP-7.
56 8
IF NO-OF-DEPENDENTS IS EQUAL TO ""
57 81
MOVE "Z" TO NO-OF-DEPENDENTS.
58 82
GO TO STEP-6.
83 STEP-8.
59 84
CLOSE FILE-1.
6 85
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

AS4SYS 3/3/94 17:5:37


NOMCOPIA
FECH/CAM

Pgina

Figura 16 (Parte 2 de 2). Ejemplo de Programa COBOL que Utiliza Puntos de Interrupcin

.1/

El primer punto de interrupcin se utiliza para saber dnde est el usuario en


el programa. Cuando se produce la interrupcin, se visualiza la informacin
siguiente:

Visualizar Punto de Interrupcin


Sentencia/Instruccin . . . . . . . . . :
Programa . . . . . . . . . . . . . . . :
Nivel de repeticin . . . . . . . . . . :

43 /17
TESTPRT
1

Pulse Intro para continuar.


F3=Salir Programa

F1=Entrada de mandatos

Figura 17. Primer Punto de Interrupcin Visualizado

Captulo 5. Depuracin del Programa

61

.2/

La informacin siguiente se visualiza como resultado de alcanzar el segundo


punto de interrupcin:

Visualizar Punto de Interrupcin


Sentencia/Instruccin
Programa. . . . . . .
Nivel de repeticin .
Posicin inicial . .
Formato . . . . . . .
Longitud . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

:
:
:
:
:
:

52 /56
TESTPRT
1
1
\CHAR
\DCL

Variable. . . . . . . . . . . . . . . . : 5 KOUNT
Tipo. . . . . . . . . . . . . . . . . :
PACKED
Longitud . . . . . . . . . . . . . . :
2
' 26'

Pulse Intro para continuar.


F3=Salir Programa

F1=Entrada de mandatos

Figura 18. Segundo Punto de Interrupcin Visualizado

Para especificar una variable para el parmetro PGMVAR, empiece cada nombre
que entre con un carcter alfanumrico (A a la Z, $, #, o @). Puede ir seguido de
los caracteres (de la A a la Z, del 0 al 9, $, #, @, o _ ).
El ejemplo siguiente muestra cmo visualizar una variable COBOL, RECORD-NO,
en el ejemplo de programa. Debido a que el sistema operativo OS/400 trata al
guin como un carcter especial, RECORD-NO debe ir entre comillas.
STRDBG
ADDBKP

TESTPRT
STMT(58)
PGMVAR('RECORD-NO')

Para visualizar el valor de un tem de tabla, entre los nmeros de apariciones adecuadas (subndices) con el nombre de variable. Se permiten hasta siete dimensiones de subndices, que deben estar separados por comas.
No utilice un nombre de ndice ni un tem de datos de ndices como subndice.
Cuando se introduce un ndice como subndice, el sistema operativo utiliza el valor
interno del ndice como subndice y pueden producirse resultados no deseados.
El ejemplo siguiente muestra cmo se debe especificar la variable COBOL TABLE1
con tres dimensiones.
PGMVAR('TABLE1(SUB1, SUB2, SUB3)')
Se permiten uno o ms espacios en blanco despus de cada coma que separa
subndices, pero la longitud total de la variable ms los subndices, parntesis,
comas y espacios en blanco especificados con la palabra clave PGMVAR no
puede sobrepasar los 132 caracteres. Para ms informacin acerca de la codificacin de variables en mandatos CL, consulte el manual CL Reference.

62

COBOL/400 Gua del usuario

Los nombres de variables pueden calificarse en el parmetro PGMVAR. Por


ejemplo:
PGMVAR('NAME-FIELD OF WORK-RECORD')
Puede utilizarse otra tcnica 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 correlacin de Divisin de Datos COBOL para encontrar su
nombre interno en COBOL (I-NAME). A continuacin, utilice el listado de referencias cruzadas IRP para encontrar el numero de la Tabla de Definicin de Objetos
(ODT) para el nombre interno. (Consulte el apartado Uso de la Instruccin
PROCESS para Especificar las Opciones del Compilador en la pgina 33 para
ms informacin sobre la obtencin estos listados). La Figura 19 muestra el mapa
de la correlacin de Divisin de Datos, y la Figura 20 en la pgina 64 muestra el
listado de referencias cruzadas para el ejemplo de programa, TESTPRT.
5763CB1 V3RM5 1
INST NIV NOMBRE FUENTE
16 FD FILE-1

Mapa de Divisin de Datos COBOL AS/4


TESTER/TESTPRT
AS4SYS 3/3/94 17:5:37
SECCIN
DISP
LONG TIPO
I-NOMBRE
ATRIBUTOS
FS
.F1
DEVICE DISK, ORGANIZATION SEQUENTIAL,
ACCESS SEQUENTIAL, RECORD CONTAINS 2
CHARACTERS, LABEL RECORDS STANDARD
2 1 RECORD-1
FS
2 GROUP .D633C
21 2 FIELD-A
FS
2 AN
.D63AE
23 1 FILLER
WS
56 GROUP .D642
24 2 KOUNT
WS
2 PACKED .D649
25 2 LETTERS
WS 2
26 AN
.D6512 VALUE
26 2 ALPHA
WS 2
1 AN
.D65B REDEFINES .D6512, DIMENSION(26)
28 2 NUMBR
WS 28
2 PACKED .D6632
29 2 DEPENDENTS
WS 3
26 AN
.D66B4 VALUE
3 2 DEPEND
WS 3
1 AN
.D6754 REDEFINES .D66B4, DIMENSION(26)
32 1 WORK-RECORD
WS
19 GROUP .D67D6
33 2 NAME-FIELD
WS
1 AN
.D684C .1/
34 2 FILLER
WS 1
1 AN
.D68C VALUE
35 2 RECORD-NO
WS 2
3 ZONED .D693C
36 2 FILLER
WS 5
1 AN
.D69C2 VALUE
37 2 LOCATION
WS 6
3 A
.D6A98 VALUE
38 2 FILLER
WS 9
1 AN
.D6B2 VALUE
39 2 NO-OF-DEPENDENTS
WS 1
2 AN
.D6B9C
41 2 FILLER
WS 12
7 AN
.D6C16 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 \ \ \ \ \

Pgina 4

Figura 19. Mapa de Correlacin de Divisin de Datos para TESTPRT

.1/

El I-NAME para NAME-FIELD

Captulo 5. Depuracin del Programa

63

5763SS1 V3RM5 92925


IBM COBOL/4 5763CB1 V3RM5
IRP LISTADO PARA TESTPRT
3/3/94 17:5:37 Pgina 43
ODT Nombre ODT
Referencia Cruzada SEQ
(\ Indica donde est definido)
184 .DMPFBH1 514\
185 .DMPFBH2 515\
14F .DMPFBIB 452\
148 .DMPFBLN 445\
15B .DMPFBLO 471\
186 .DMPFBLP 512 516\
182 .DMPFBLS 512\
14C .DMPFBL1 449\ 165 166
14D .DMPFBL2 45\
16 .DMPFBMF 476\
14E .DMPFBMN 451\ 995 198 199 1118 1119
18 .DMPFBND 59\
15 .DMPFBOB 453\
15A .DMPFBOF 47\
152 .DMPFBOL 458\
15F .DMPFBPO 475\
161 .DMPFBQN 477\
155 .DMPFBRC 461\
153 .DMPFBRW 459\
158 .DMPFBSC 468\
149 .DMPFBSF 446\
14A .DMPFBSL 447\
14B .DMPFBSN 448\
146 .DMPFBTY 443\ 197 1117
159 .DMPFBUF 469\
183 .DMPFBVL 513\
18B .DMPIOFB 522\
1A .DMPIOFS 545\ 546 547
1A6 .DMPKYLN 551\
165 .DMPNDEV 481\ 187 1145
144 .DMPOFBS 441\ 442 443 444 445 446 447 448 449 45 451 452 453 454 458 459 46 461 462 467 468 469 47 471 472 473 474 475 476
477 478 479 48 481 482 58 59 51
1AA .DMPRCD 555\
1AC .DMPRCDN 557\
1AE .DMPRDUP 559\
1A1 .DMPRFMT 546\
1A7 .DMPRRN 552\
1A5 .DMPSRC 55\
22 .D6A98 685\
221 .D6B2 686\
222 .D6B9C 687\ 767 914 916
223 .D6C16 688\
211 .D63AE 67\
21 .D633C 669\ 789 94
212 .D642 671\ 672 673 676 677
213 .D649 672\ 753 757 761 765 815
216 .D65B 675\ 763
214 .D6512 673\ 674
218 .D66B4 677\ 678
217 .D6632 676\ 754 758 769
21B .D67D6 68\ 681 682 683 684 685 686 687 688 778 789 94
21A .D6754 679\ 767
21D .D68C 682\
21C .D684C 681\ 763 .1/
21F .D69C2 684\
21E .D693C 683\ 769

Figura 20. Seccin del Listado de Referencias Cruzadas IRP para TESTPRT

.1/

021C es el nmero ODT para NAME-FIELD

Ahora podr utilizar el nmero ODT 021C (para NAME-FIELD), con los mandatos
siguientes, para aadir un punto de interrupcin al ejemplo de programa en la instruccin 52.
STRDBG
ADDBKP

TESTPRT
STMT(52)
PGMVAR('/21C')

Estos mandatos se exponen en el manual CL Reference.

64

COBOL/400 Gua del usuario

Cuando se alcanza este punto de interrupcin, se visualiza lo siguiente:

Visualizar Punto de Interrupcin


Sentencia/Instruccin
Programa. . . . . . .
Nivel de repeticin .
Posicin inicial . .
Formato . . . . . . .
Longitud . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

:
:
:
:
:
:

52 /56
TESTPRT
1
1
\CHAR
\DCL

Variable. . . . . . . . . . . . . . . . : /21C
Tipo. . . . . . . . . . . . . . . . . :
CHARACTER
Longitud. . . . . . . . . . . . . . . :
2
\...+....1....+....2....+....3....+....4....+....5
'Z'

Pulse Intro para continuar.


F3=Salir Programa

F1=Entrada de mandatos

Figura 21. Punto de Interrupcin en la Instruccin 52

Cambio de Variables de Programa


Ahora podr cambiar el valor de las variables de programa para alterar el proceso
del programa. Puede utilizar el mandato Cambiar Variable de Programa
(CHGPGMVAR) para cambiar el valor de una variable. Este proceso se explica
con ms detalle en el manual CL Reference.
Puede utilizar el mandato DSPPGMVAR para visualizar tems de datos de puntero,
pero no podr utilizar el mandato CHGPGMVAR para cambiar tems de datos de
puntero. Para cambiar los tems de datos de puntero, deber utilizar los mandatos
CHGHLLPTR o CHGPTR. Para ms informacin acerca de los mandatos
CHGHLLPTR y CHGPTR, consulte el manual CL Reference.

Consideraciones para la Utilizacin de Puntos de Interrupcin


Debe conocer las siguientes caractersticas de los puntos de interrupcin antes de
utilizarlos:
Si se elude un punto de interrupcin, por ejemplo la instruccin GO TO, ese
punto de interrupcin no se procesa.
Cuando se establece un punto de interrupcin en una instruccin, tiene lugar el
punto de interrupcin antes de que se procese la instruccin.
Las funciones de los puntos de interrupcin se especifican mediante los mandatos OS/400.
Estas funciones incluyen:
Aadir puntos de interrupcin a programas
Eliminar puntos de interrupcin de programas
Visualizar informacin de punto de interrupcin

Captulo 5. Depuracin del Programa

65

Reanudar la ejecucin de un programa despus de que se haya alcanzado


(visualizado) un punto de interrupcin.
Consulte la publicacin CL Gua del Programador para la descripcin de estos
mandatos y para ms detalles acerca de puntos de interrupcin.

Utilizacin 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 tambin registra los valores de variables
especficas utilizadas en las instrucciones del programa.
Programa

Instruccin

1 ......

2 ......

3 ......

4 ......

5 ......

6 ......

7 ......

8 ......

Rastreo

Orden de Proceso
Variables

1
5
.......

6
5
.......

7
5
.......

8
5
.......

6
5
.......

7
5
.......

2
5
.......

6
5
.......

7
5
.......

Un rastreo se diferencia de un punto de interrupcin en que el nmero de instrucciones implicadas en el rastreo influye en el lugar en el que finalizar el rastreo. El
sistema registra todas las instrucciones rastreadas que se han procesado. Puede
solicitar una visualizacin de la informacin rastreada, que muestra la secuencia en
que se han procesado las instrucciones y, si se solicita, los valores de las variables
utilizadas en las instrucciones.
Especifique qu instruccin rastrear el sistema. Tambin puede especificar que
las variables se visualicen nicamente cuando su valor haya cambiado desde la
ejecucin de la ltima instruccin de rastreo.
Podr especificar un rastreo de una instruccin en un programa, un grupo de instrucciones en un programa o todas las instrucciones de todo un programa.

Ejemplo de Utilizacin de un Rastreo


La Figura 22 en la pgina 67 muestra una parte del ejemplo de programa COBOL,
TESTPRT. El mandato OS/400 siguiente aade un rastreo de las instrucciones 54
a 58 en ese programa. La variable NO-OF-DEPENDENTS slo se registrar si su
valor cambia entre las instrucciones 54 y 58:
ADDTRC

STMT((54 58))
PGMVAR('NO-OF-DEPENDENTS')
OUTVAR(\CHG)

Nota: Ha de introducirse STRDBG antes que la instruccin ADDTRC.

66

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
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.
44 49
MOVE ZERO TO KOUNT, NUMBR.
5\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
51\ LOS 3 PARRAFOS SIGUIENTES CREAN INTERNAMENTE LOS \
52\ REGISTROS QUE HA DE CONTENER EL ARCHIVO, LOS
\
53\ GRABA EN DISCO Y LOS VISUALIZA
\
54\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
55 STEP-2.
45 56
ADD 1 TO KOUNT, NUMBR.
46 57
MOVE ALPHA (KOUNT) TO NAME-FIELD.
47 58
MOVE DEPEND (KOUNT) TO NO-OF-DEPENDENTS.
48 59
MOVE NUMBR
TO RECORD-NO.
6 STEP-3.
49 61
DISPLAY WORK-RECORD.
5 62
WRITE RECORD-1 FROM WORK-RECORD.
63 STEP-4.
51 64
PERFORM STEP-2 THRU STEP-3 UNTIL KOUNT IS EQUAL TO 26.
65\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
66\ EL SIGUIENTE PARRAFO CIERRA EL ARCHIVO ABIERTO
\
67\ PARA SALIDA Y VUELVE A ABRIRLO PARA ENTRADA
\
68\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
69 STEP-5.
52 7
CLOSE FILE-1.
53 71
OPEN INPUT FILE-1.
72\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
73\ LOS SIGUIENTES PARRAFOS LEEN HACIA ATRAS EL
\
74\ ARCHIVO Y SELECCIONAN EMPLEADOS SIN SUBORDINADOS \
75\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
76 STEP-6.
54 77
READ FILE-1 RECORD INTO WORK-RECORD
55 78
AT END GO TO STEP-8.
79 STEP-7.
56 8
IF NO-OF-DEPENDENTS IS EQUAL TO ""
57 81
MOVE "Z" TO NO-OF-DEPENDENTS.
58 82
GO TO STEP-6.
83 STEP-8.
59 84
CLOSE FILE-1.
6 85
STOP RUN.
\ \ \ \ \
F I N D E L F U E N T E
\ \ \ \ \

NOMCOPIA

FECH/CAM
3/7/94

3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94

Figura 22. Ejemplo de un Programa COBOL que Utiliza un Rastreo

La Figura 23 en la pgina 68 es un ejemplo de un listado de informacin rastreada. Esta informacin se produce mediante el mandato Visualizar Datos de
Rastreo (DSPTRCDTA):
DSPTRCDTA OUTPUT(\PRINT) CLEAR(\YES)
Este mandato se explica en el manual CL Reference.

Captulo 5. Depuracin del Programa

67

5763SS1 V3RM5
Visualizar Datos de Rastreo
Trabajo. . :
DSP2
Usuario. . :
PGMRS
Nmero . . . . :
Sentencia/
Programa
Instruccin
Nivel de Recursividad
Nmero de
TESTPRT
54
1
Posicin inicial . . . . . . . . . . . : 1
Longitud . . . . . . . . . . . . . . . : \DCL
Formato . . . . . . . . . . . . . . . . : \CHAR
Variable . . . . . . . . . . . . . . . : 5 NO-OF-DEPENDENTS
Tipo . . . . . . . . . . . . . . . . :
CHARACTER
Longitud . . . . . . . . . . . . . . :
2
\...+....1....+....2....+....3....+....4....+....5
' '
Sentencia/
Programa
Instruccin
Nivel de Recursividad
Nmero de
TESTPRT
56
1
TESTPRT
57
1
TESTPRT
58
1
Posicin inicial . . . . . . . . . . . : 1
Longitud . . . . . . . . . . . . . . . : \DCL
Formato . . . . . . . . . . . . . . . . : \CHAR
\Variable . . . . . . . . . . . . . . . : 5 NO-OF-DEPENDENTS
Tipo . . . . . . . . . . . . . . . . :
CHARACTER
Longitud . . . . . . . . . . . . . . :
2
\...+....1....+....2....+....3....+....4....+....5
'Z '
Sentencia/
Programa
Instruccin
Nivel de Recursividad
Nmero de
TESTPRT
54
1
TESTPRT
56
1
Posicin inicial . . . . . . . . . . . : 1
Longitud . . . . . . . . . . . . . . . : \DCL
Formato . . . . . . . . . . . . . . . . : \CHAR
\Variable . . . . . . . . . . . . . . . : 5 NO-OF-DEPENDENTS
Tipo . . . . . . . . . . . . . . . . :
CHARACTER
Longitud . . . . . . . . . . . . . . :
2
\...+....1....+....2....+....3....+....4....+....5
'1 '
Sentencia/
Programa
Instruccin
Nivel de Recursividad
Nmero de
TESTPRT
58
1
TESTPRT
54
1
TESTPRT
56
1
Posicin inicial . . . . . . . . . . . : 1
Longitud . . . . . . . . . . . . . . . : \DCL
Formato . . . . . . . . . . . . . . . . : \CHAR
\Variable . . . . . . . . . . . . . . . : 5 NO-OF-DEPENDENTS
Tipo . . . . . . . . . . . . . . . . :
CHARACTER
Longitud . . . . . . . . . . . . . . :
2
\...+....1....+....2....+....3....+....4....+....5
'2 '
Sentencia/
Programa
Instruccin
Nivel de Recursividad
Nmero de
TESTPRT
58
1
TESTPRT
54
1
TESTPRT
56
1

4122
secuencia
1

Secuencia
2
3
4

Secuencia
5
6

Secuencia
7
8
9

Secuencia
1
11
12

Figura 23. Listado de Visualizar Datos de Rastreo

Consideraciones para la Utilizacin de un Rastreo


Antes de utilizar los rastreos debe tener un conocimiento de las siguientes caractersticas de los rastreos:
Las instrucciones eludidas, por ejemplo la instruccin GO TO, no se incluyen
en el rastreo.

68

COBOL/400 Gua del usuario

Las funciones de rastreo se especifican mediante los mandatos OS/400 en el


trabajo que contiene el programa rastreado. Estas funciones incluyen la
adicin de peticiones de rastreo en un programa, eliminacin de peticiones de
rastreo de un programa, eliminacin de datos recogidos de rastreos anteriores,
visualizacin de informacin de rastreos y visualizacin de los rastreos que se
han especificado para el programa.
Adems de los nmeros de instruccin, en el campo de salida STMT del
rastreo puede aparecer el nombre de rutinas generadas por COBOL.
Consulte la publicacin CL Gua del Programador para ms informacin acerca de
los rastreos.

Utilizacin de un Conmutador para Depuracin en Tiempo de


Ejecucin
Se proporciona un conmutador en tiempo de ejecucin para el recurso de depuracin COBOL. Este conmutador activa el cdigo de depuracin generado cuando
se especifica WITH DEBUGGING MODE. Cuando el conmutador est activado, se
activan todas las secciones de depuracin compiladas; cuando est desactivado
(estado por omisin) se desactivan los procedimientos declarativos USE FOR
DEBUGGING. Consulte el Apndice B, Caractersticas de Depuracin en la
pgina 329 para ms informacin acerca de las caractersticas de depuracin
COBOL y la utilizacin del conmutador en tiempo de ejecucin.

Utilizacin de un Vuelco con Formato COBOL


Algunos mensajes en tiempo de ejecucin COBOL le permiten obtener una opcin
de vuelco con formato COBOL seleccionando D o F. El vuelco con formato (seleccin D) incluye la informacin actual acerca de los archivos del programa, los contenidos de los campos, las estructuras de los datos, matrices y tablas para las
variables de datos COBOL definidas por el usuario.
Si elige la opcin F, el vuelco tambin incluye una lista de campos generados por
el compilador y sus contenidos.
Tanto la opcin D como la opcin F volcarn los primeros 256 caracteres de las
variables del programa. Cualquier variable mayor que 256 caracteres se truncar.
Si no quiere un vuelco, especifique C (cancelar sin vuelco). La respuesta C
tambin es la respuesta por omisin para todos los mensajes de consulta COBOL
que permiten un vuelco.
Para ms informacin acerca de las modalidades de respuesta, consulte Respuesta a Mensajes de Consulta en Tiempo de Ejecucin en la pgina 54.
La salida para el vuelco se enva al archivo de impresora suministrado por IBM,
QPPGMDMP.
Consulte el Apndice H, Ejemplo de Vuelco con Formato COBOL en la
pgina 393 para ver un ejemplo de un vuelco con formato.

Captulo 5. Depuracin del Programa

69

70

COBOL/400 Gua del usuario

Captulo 6. Manejo de Errores y Excepciones COBOL/400


Este captulo describe el manejo de errores del COBOL/400 y su utilizacin.
Tambin define la relacin entre el manejo de errores y el proceso de verbos de
E/S.
El compilador COBOL/400 proporciona dos mtodos para el manejo de errores:
estndar y no estndar. El manejo de errores estndar no est disponible en los
compiladores con un release anterior a la Versin 1 Release 3.

Manejo de Errores Estndar


El manejo de errores estndar ofrece compatibilidad extra con otros compiladores
IBM COBOL (tales como VS COBOL II), adems de otros compiladores que no
son IBM COBOL. Es muy til durante el proceso de instrucciones de E/S, puesto
que captura errores graves, que de lo contrario, pasaran inadvertidos.
Una caracterstica muy importante del manejo de errores estndar es la emisin de
un mensaje en tiempo de ejecucin cuando se produce un error durante el proceso
de una instruccin de E/S si no hay ninguna frase AT END/INVALID KEY, ningn
procedimiento USE ni ninguna clusula FILE STATUS en la instruccin SELECT
para el archivo.
Sensibilidad del Release!
El manejo de errores estndar se introdujo en la Versin 1 Release 3 como una
opcin por omisin. Para obtener el manejo de errores que se utiliz en
releases anteriores, especifique *NOSTDERR como opcin de generacin del
mandato CRTCBLPGM, o NOSTDERR en la instruccin PROCESS.

Visin General del Manejo de Errores


Cuando se ejecuta un programa COBOL, pueden producirse varios tipos de error.
La instruccin COBOL que est activa en el momento en que se produce un error
provoca que se ejecuten ciertas clusulas o frases COBOL.
Durante las operaciones aritmticas, los errores tpicos son errores de tamao
(MCH1210) y errores de datos decimales (MCH1202); la frase correspondiente
para el manejo de errores es la frase SIZE ERROR.
COBOL no detecta directamente la mayora de errores MCH; los detecta el sistema
operativo y dan como resultado los mensajes del sistema. COBOL supervisa estos
mensajes, estableciendo bits internos que determinan si se ha de ejecutar una instruccin imperativa SIZE ERROR o emitir un mensaje en tiempo de ejecucin
(LBE7200) para finalizar el programa.
COBOL detecta errores que se producen mediante la divisin por cero durante una
operacin aritmtica. Si el COBOL los detecta, estos errores provocan que se
ejecute la instruccin imperativa SIZE ERROR.
El mensaje del sistema MCH1210 se produce cuando se desplaza un campo
numrico a un receptor que es demasiado pequeo. COBOL supervisa este error
Copyright IBM Corp. 1994

71

y tambin da como resultado la ejecucin de la instruccin imperativa SIZE


ERROR.
LBE7200 es un mensaje en tiempo de ejecucin que se emite generalmente
cuando se produce un error grave no supervisado en el programa COBOL.
Tambin puede emitirse bajo *NOSTDERR, cuando se produce un error en
ausencia de un manejador de errores apropiado.
El mensaje del sistema MCH1202 es un ejemplo tpico de un error grave no supervisado. Este tipo de error produce como resultado el mensaje en tiempo de ejecucin COBOL LBE7200 (o LBE7204 si el error se produce en un programa llamado
por un programa COBOL). Los mensajes del sistema MCH3601 y MCH0601 son
otros ejemplos de errores graves no supervisados.
Para operaciones de E/S, hay varias frases y clusulas importantes para el manejo
de errores. Son las frases AT END/INVALID KEY y NO DATA (codificadas a nivel
de la instruccin COBOL), el procedimiento USE y la clusula FILE STATUS (codificada a nivel de archivo). Durante las operaciones aritmticas y de E/S, el
sistema detecta los errores y enva mensajes; es entonces cuando COBOL supervisa los mensajes. Al igual que sucede con un error resultante de una divisin por
cero, COBOL detecta algunos errores durante una operacin de E/S. Sin tener en
cuenta cmo se detecta un error durante una operacin de E/S, el resultado
siempre ser un estado de archivo interno en el que el primer carcter no ser
cero, ser un mensaje en tiempo de ejecucin o ambas cosas.

|
|

Interfaz de programacin de uso general

Utilizacin de las Interfaces del Programa de Aplicacin (API) para el


Manejo de Errores
Es posible utilizar las API COBOL/400 para controlar el manejo de errores dentro
de los programas. Estas API son Recuperar Manejador de Errores COBOL
(QLRRTVCE) y Establecer Manejador de Errores COBOL (QLRSETCE).
La API Recuperar Manejador de Errores COBOL (QLRRTVCE) permite recuperar
el nombre del programa actual o pendiente de manejo de errores COBOL. Se
puede llamar mediante cualquier lenguaje de programacin.
La API Establecer Manejador de Errores COBOL (QLRSETCE) permite especificar
la identidad de un programa de manejo de errores COBOL. Se puede llamar
mediante cualquier lenguaje de programacin.
Tambin es posible utilizar la API Cambiar Programa Principal COBOL
(QLRCHGCM) para crear unidades de ejecucin mltiples que tengan su propio
manejador de error.
Para obtener ms informacin sobre estas API, consulte el manual System
Programmers Interface Reference.
Fin de Interfaz de programacin de uso general

72

COBOL/400 Gua del usuario

Estado de archivo Interno y Externo


Debe proporcionar un entrada FILE-CONTROL para especificar la organizacin y el
mtodo de acceso para cada archivo que utiliza el programa COBOL. Tambin
puede codificar en esta entrada una clusula FILE STATUS.
La clusula FILE STATUS designa uno o dos tems de datos (codificados en la
seccin WORKING-STORAGE) para mantener una copia del resultado de una operacin de E/S. La copia del primero de estos tems se denomina estado de archivo
externo. Si utiliza el archivo TRANSACTION, se dispone de otro registro del resultado llamado cdigo de retorno externo, que est compuesto por los cdigos de
retorno principal y secundario externos.
COBOL guarda sus propias copias de estos dos tems de datos, que se almacenan
en el Bloque de Informacin de Archivos (FIB) COBOL. En este captulo, el estado
de archivo y cdigos de retorno (principal/secundario) hacen referencia a copias de
COBOL a no ser que se especifique lo contrario.
Durante el proceso de una instruccin de E/S, el estado de archivo puede actualizarse en una de las tres maneras que se describen a continuacin. El contenido
del estado del archivo determina los procedimientos del manejo que errores que
deben ejecutarse.

|
|

Los procedimientos de manejo de errores toman el control despus de una operacin de entrada o salida no satisfactoria, que se indica mediante cualquier estado
del archivo en el que el primer carcter no sea cero. Antes de que se ejecute
cualquiera de estos procedimientos, el estado del archivo se copia en el estado del
archivo externo.
El estado del archivo se establece mediante una de las tres maneras siguientes:
Mtodo 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 mayora de estados de archivo que se establecen de esta
forma son el resultado de la comprobacin del Bloque de Informacin de
Archivos (FIB) y del Bloque de Control de Archivos (UFCB).
Mtodo B (archivos de transaccin):
COBOL comprueba los cdigos de retorno principal y secundario del sistema.
Si el cdigo de retorno principal no es cero, el cdigo de retorno (compuesto
por cdigos de retorno principal y secundario) se transforma en estado de
archivo. Si el cdigo de retorno principal es cero, el Mtodo A o C puede establecer el estado de archivo.
Observe que para las operaciones READ, WRITE y REWRITE de subarchivo,
slo se aplican los Mtodos A y C.
Para obtener una lista de cdigos 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 publicacin COBOL/400 Reference.
Mtodo C (todos los archivos):
El sistema enva un mensaje cuando el COBOL llama la gestin de datos para
realizar una operacin de E/S. COBOL supervisa estos mensajes y establece
un estado de archivo concordante.
Captulo 6. Manejo de Errores y Excepciones COBOL/400

73

COBOL supervisa especficamente un mensaje generando supervisores de


mensajes en el programa objeto producido en tiempo de compilacin. La
generacin del supervisor de mensajes se basa en los tipos de archivos (como
por ejemplo, tipo de organizacin y tipo de acceso) que especifique en un programa. As pues, un mensaje que se supervisa especficamente en un programa puede caer bajo el manejador de E/S genrico que est en otro
programa. En este captulo hay ms informacin sobre la generacin del
supervisor de mensajes.
COBOL supervisa la mayora de mensajes que el sistema enva en respuesta
a una operacin de E/S. Las excepciones tpicas de E/S dan como resultado
mensajes CPF que empiezan por CPF4 o CPF5, y COBOL realiza la supervisin especfica para stas.
Para obtener una lista de mensajes para los que el COBOL efecta la supervisin especfica, consulte el apartado Resumen de Soporte de la Estructura
de Archivos y Valores Clave del Estado en la publicacin COBOL/400
Reference.

74

COBOL/400 Gua del usuario

Deteccin de Errores Generales


Estado del Archivo
001

Inicio de la operacin de E/S


Mtodo A: Compruebe el contenido de las variables de los bloques
de control de archivos.
(Por ejemplo, compruebe que se ha abierto el archivo
adecuadamente y en la modalidad apropiada.)
Se ha establecido el estado de archivo interno diferente de 00?
S No
002
Llame la gestin de datos para realizar la operacin de E/S
Mtodo C: Supervise los mensajes enviados por la gestin de datos
y establezca el estado de archivo interno de acuerdo
a los mismos.
Mtodo A: Compruebe los bloques de informacin del sistema y
establezca el estado de archivo interno si no lo
hizo utilizando el Mtodo 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 clusula de estado de archivo). Basndose en el
estado de archivo interno, ejecute el cdigo para el manejo de errores.
004
Compruebe los cdigos de retorno principal y secundario del sistema
Mtodo B: Si la gestin de datos ha enviado un mensaje, convierta
los cdigos de retorno principal y secundario asociados al
mensaje del sistema en estado de archivo interno.
Contine en el Paso 003
005
Contine en el Paso 003

Captulo 6. Manejo de Errores y Excepciones COBOL/400

75

Generacin del Supervisor de Mensajes


Un supervisor de mensajes proporciona a un programa una forma de manejar
mensajes enviados por el sistema o por otro programa. Un supervisor de mensajes puede manejar uno o ms mensajes.
En algunos aspectos, un supervisor de mensajes se parece a un procedimiento
USE. Un supervisor de mensajes especifica una accin que se ha de llevar a cabo
cuando se produce un error durante el proceso de una instruccin de la interfaz
(MI) de la misma forma que un procedimiento USE especifica las acciones que ha
que llevar a cabo en respuesta a un error de E/S. Observe que el mensaje del
sistema seala el error de instruccin MI y que la instruccin COBOL est compuesta por una o ms instrucciones MI.
A diferencia de un procedimiento USE (que puede no estar activo durante un programa completo), un supervisor de mensajes COBOL se activa tan pronto como se
inicia el programa. Los supervisores de mensajes establecen los estados de
archivo e indican las condiciones SIZE ERROR, END-OF-PAGE y OVERFLOW.
Los supervisores de mensajes que genera el COBOL se agrupan en varios conjuntos, generados bajo ciertas condiciones dentro del programa COBOL. La
siguiente tabla proporciona las directrices generales concernientes a la generacin
de supervisores de mensajes:
Tabla 1 (Pgina 1 de 3). Generacin de supervisores de mensajes
Causa del supervisor de mensajes
Codifique una clusula de estado de
archivo

Miembros de ejemplo del conjunto de mensajes supervisados


No se encontr archivo, estado archivo externo 35
Condicin de error permanente, estado archivo externo
30
Modalidad OPEN no vlida, estado archivo externo 37
No hay registro siguiente, mensaje del sistema CPF5183
(parte del estado de archivo externo 46)
Tipo de acceso no definido o no autorizado, estado
archivo externo 91
Error lgico, estado archivo externo 92 (excepto para
mensajes del sistema CPF4740 y CPF5070)
Registro bloqueado, estado archivo externo 9D
OPEN con control de compromiso anmalo, estado
archivo externo 9P
WRITE no vlido, mensajes del sistema CPF5018 y
CPF5272 (parte del estado de archivo externo 24).

Codifique una frase AT END

Manejador fin de archivo, mensajes del sistema


CPF5001 y CPF5025
No se encontr archivo, estado archivo externo 35

76

COBOL/400 Gua del usuario

Tabla 1 (Pgina 2 de 3). Generacin de supervisores de mensajes


Causa del supervisor de mensajes

Miembros de ejemplo del conjunto de mensajes supervisados

Especifique un subarchivo en el programa

ltimo registro grabado en el subarchivo, estado archivo


externo 9M
No se encontr registro de subarchivo, mensaje del
sistema CPF5020 (parte del estado archivo externo 23)
Violacin del lmite de subarchivo, mensajes del sistema
CPF5021 y CPF5043 (parte del estado de archivo
externo 24). Una violacin del lmite es un intento de
escribir fuera de los lmites de un archivo secuencial.

Codifique una instruccin READ de


subarchivo con la frase NEXT
MODIFIED

No hay registros de subarchivo modificados, estado


archivo externo 12.

Utilice un archivo secuencial


indexado

No hay supervisor especfico (Mtodo A), establezca


estados de archivo interno 21 y 22.

Hay una operacin READ con clave

Mensajes del sistema CPF5006 y CPF5013 (parte de


estado archivo externo 23).

Hay una operacin WRITE secuencial

Violacin de lmite, mensaje del sistema CPF5116 (parte


de estado archivo externo 34).

Hay una operacin REWRITE


secuencial indexada

No hay supervisor especfico (mtodo A), establezca los


estados de archivo interno 21, 43, 44 y 9S.

Hay TRANSACTION I/O

Tiempo de espera READ, mensaje del sistema CPF4743,


establezca estado archivo externo 00
No hay datos durante el READ, mensaje del sistema
CPF4742, establezca bit NO DATA
No hay dispositivos adquiridos, mensaje del sistema
CPF5070 (parte de estado archivo externo 92)
No hay dispositivos invitados/adquiridos, mensaje del
sistema CPF4740 (parte de estado archivo externo 92 y
estado archivo externo 10)
Cancelar trabajo, estado archivo externo 9A
WRITE fall, estado archivo externo 9I
Error temporal, estado archivo externo 9N.

Especifique una clusula de formato


en una instruccin de E/S

Nombre de formato no vlido/no encontrado, estado


archivo interno 9K.

Captulo 6. Manejo de Errores y Excepciones COBOL/400

77

Tabla 1 (Pgina 3 de 3). Generacin de supervisores de mensajes


Causa del supervisor de mensajes

Miembros de ejemplo del conjunto de mensajes supervisados

No hay ninguna E/S (incluyendo las


operaciones ACCEPT/DISPLAY
ampliadas) en el programa.

Manejador de excepciones END-OF-PAGE (mensaje del


sistema CPF5004)
Error de comprobacin de nivel, estado archivo externo
39
Manejador de excepciones genrico, estado archivo
externo 90
Discrepancia del indicador (mensaje en tiempo de ejecucin LBE7421, mensaje del sistema CPF4238)
Hacer caso omiso de COMMIT o ROLLBACK (mensaje
del sistema CPF8350).
Clave duplicada, estado archivo externo 22.
Cambio no vlido de direccin READ DYNAMIC, estado
de archivo interno 9U, mensaje del sistema CPF5184.

Nota: Para obtener una lista de los mensajes supervisados que se desactivan bajo un estado de
archivo determinado, consulte el apartado Resumen de soporte de estructura de archivos y valores
clave del estado de la publicacin COBOL/400 Reference.

Finalizacin de un Programa COBOL


Hay tres elementos que pueden provocar la finalizacin de un programa COBOL:
Una instruccin COBOL (EXIT PROGRAM, STOP RUN o GOBACK)
Una respuesta a un mensaje de consulta
Una instruccin STOP RUN o EXIT PROGRAM implcita.
Se supone una instruccin STOP RUN cuando un programa principal COBOL
carece de una instruccin ejecutable (EXIT PROGRAM implcito para un subprograma COBOL), es decir, cuando el proceso se desactiva al llegar a la ltima instruccin un programa.
Los mensajes de consulta pueden emitirse en respuesta a una instruccin COBOL
(un literal STOP), pero se emiten generalmente cuando se produce un error grave
en un programa, o cuando una operacin COBOL no finaliza satisfactoriamente.
(Por ejemplo LBE7205, LBE7207 y LBE7208).
Hay cuatro respuestas comunes a un mensaje de consulta COBOL: C, D, F y G
(cancelar, cancelar y volcar, cancelar y vuelco total, continuar). Los tres primeros
originan (como pasos finales) un STOP RUN implcito seguido de un mensaje de
escape LBE9001. LBE9001 indica que el programa finaliza debido a un mensaje.
Una instruccin STOP RUN implcita o explcita, o una instruccin GOBACK que
aparezca en un programa principal, provoca la finalizacin de toda la unidad de
ejecucin COBOL. Si se emite un mensaje de escape (LBE9001) como paso final
de una unidad de ejecucin, el llamador del primer programa COBOL puede supervisarlo. (Esto es debido a que el primer programa COBOL que se ha de llamar se
convierte en el programa principal).

78

COBOL/400 Gua del usuario

Si una unidad de ejecucin COBOL est compuesta por varios programas COBOL
y no COBOL, el programa principal COBOL puede emitir el mensaje de escape.
As pues, cualquier programa no COBOL que se llame despus del programa principal no puede supervisar el mensaje de escape.

Cdigos de Retorno
Cuando se especifica un archivo TRANSACTION en el programa, la clusula FILE
STATUS de la instruccin SELECT puede contener dos nombres de datos: el
estado de archivo externo y el cdigo de retorno (principal y secundario). Tal y
como se describe en el apartado Estado de archivo Interno y Externo en la
pgina 73, un estado de archivo puede establecerse en una de las tres formas
descritas; no obstante, el sistema establece los cdigos de retorno despus de
cualquier transaccin de E/S que llame la gestin de datos. Por lo tanto, la
mayora de condiciones de error que dan como resultado un mensaje del sistema
tambin poseen un cdigo de retorno asociado.
Los cdigos de retorno son similares a los valores del estado de archivo. Es decir,
los mensajes CPF que enva el sistema se agrupan juntos bajo supervisores de
mensaje, y cada supervisor de mensajes establece uno o ms estados de archivo.
De forma similar, los mensajes CPF se agrupan juntos, y cada grupo de mensajes
genera el mismo cdigo de retorno principal. (El cdigo de retorno secundario no
tiene que ser el mismo).
La principal diferencia entre los estados de archivo y los cdigos de retorno es que
la agrupacin de mensajes CPF es distinta.
Aunque COBOL slo establece cdigos de retorno para archivos TRANSACTION,
otros tipos de archivos (como por ejemplo los archivos de impresora) tambin los
establecen. Se puede acceder a los cdigos de retorno para estos archivos
mediante una operacin ACCEPT desde I-O-FEEDBACK.

Modelos Estndar y no Estndar de Manejo de Errores


La figuras 24 y 25 muestran dos modelos de manejo de errores diferentes.

Captulo 6. Manejo de Errores y Excepciones COBOL/400

79

La operacin de E/S
no es satisfactoria

Error
grave no

Ye s

supervisado?

Emitir mensaje

Cul es la

de error

respuesta a

LBE7200

LBE7200?

C,D,F

No

Vo l v e r a l
Establecer

programa COBOL

estado del
archivo interno

Emitir mensaje
De qu

Fin de archivo

Resto

Error
grave

error

informativo (por
ejemplo, LBE7421);

supervisado?

se trata?

establecer estado
de archivo en 90

No

Clave no
vlida

Existe

Existe

Existe
No

una frase

una frase

AT E N D ?

I N VA L I D K E Y ?

Ejecutar

Ejecutar

sentencia

sentencia

imperativa

imperativa

AT E N D

I N VA L I D K E Y

No

Existe una

No

una clasula

Declarativa

de estado de

de error?

archivo?

No

Ejecutar
declarativa
de error

Vuelva a l
programa COBOL

N ota:

Figura 24 (Parte 1 de 2). Manejo de Error Estndar (por Omisin)

80

COBOL/400 Gua del usuario

= Ir a

Finalizar
programa COBOL

en la pgina siguiente

E m i t ir
sa je

m e n -

d e

e rro r

L B E 7 2 0 7

Realizar
vuelco

Cul

D,F

es

la

respuesta

L B E 7 2 0 7 ?

F ina liza r
programa

COBOL

COBOL

F ina liza r
programa

COBOL

Vo l v e r
programa

COBOL

E x is t e

u n
V o lv e r a l

m a n e ja d o r
d e

d ia g r a m a

e r r o r e s ?

a n t e r io r

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
d e

c d ig o

re to rn o

es

e s p a c io

un

n o

v lid o ?

N o

E je c u t a r
v u e lc o

C u l e s

e l

e l c d ig o

C O B O L

d e

F in a liz a r e 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

Figura 24 (Parte 2 de 2). Manejo de Error Estndar (por Omisin)

Captulo 6. Manejo de Errores y Excepciones COBOL/400

81

Operacin de E/S
no satisfactoria

Vo l v e r a l
programa COBOL
G

*1

Error

grave no

supervisado?
error?

Emitir mensaje

Cul es

de error

la respuesta

LBE7200

a LBE7200?

No

*2

Error

Emitir mensaje

grave

Finalizar

d e e r r o r, p o r e j e m p l o

supervisado?

programa COBOL

LBE7021

No

Establecer
estado de
archivo interno

*3
El estado

Existe

una declarativa

declarativa

igual a 90

de error?

de error

9P?
No

Fin de archivo

No

De

Resto

qu error se
trata?

Clave no
vlida

Existe
una frase
AT E N D ?

Existe
No

una frase
I N VA L I D K E Y ?

No

Existe una

No

declarativa de
error?

Ejecutar

Ejecutar

sentencia

sentencia

Ejecutar

imperativa

imperativa

declarativa

AT E N D

I N VA L I D K E Y

de error

Vo l v e r a l
programa COBOL

Figura 25. Manejo de error no estndar (disponible por la opcin *NOSTDERR)

82

Ejecutar

de archivo es

COBOL/400 Gua del usuario

C,D,F

Finalizar
programa COBOL

Pueden producirse otras excepciones de E/S que COBOL no tenga previstas.


Estas excepciones tambin dan como resultado los mensajes CPF4xxx y CPF5xxx,
pero no hay ninguna supervisin especfica para ellos. Por el contrario, son
detectados por medio de un manejador de error de E/S genrico. Este manejador
de error supervisa algunos rangos de los mensajes CPF4xxx y CPF5xxx; establece
el estado de archivo 90 y sigue a la rama S desde la posicin *3 en la Figura 25
en la pgina 82.
Puede producirse algn excepcin de E/S que se supervisa especficamente y que,
segn el modelo de manejo de errores no estndar, es suficientemente grave
como para detener el programa. En esta situacin no se establece ningn estado
de archivo.
Estas excepciones de E/S dan como resultado mensajes de escape COBOL especficos seguidos por la finalizacin del programa siguen a la rama S desde la posicin *2 en la Figura 25.
Ejemplo: CPF4238 - discrepancia INDARA entre el programa y el archivo
Hay supervisin especfica para este mensaje, y el resultado es el mensaje de
error LBE7021 seguido por una finalizacin del programa.
Otros mensajes COBOL que entran en esta categora son LBE7020 y
LBE7022.
Durante una operacin de E/S, puede producirse un problema que el sistema no
esperaba. Estos problemas generalmente dan como resultado varios mensajes
(como por ejemplo los que comienzan por MCH) que se desactivan fuera del
rango CPF4xxx y CPF5xxx. Estos errores, conocidos como errores graves no
supervisados, siguen a la rama S desde la posicin *1 en la Figura 25. Estos
errores se manejan mediante un supervisor de mensajes multiuso y dan como
resultado una finalizacin del programa COBOL. No se establece ningn estado
de archivo

Efectos de *STDERR y *NOSTDERR en el Estado de Archivos


Efectos de los mensajes LBE742x y LBE702x:
Con *STDERR, el estado de archivo 90 se establece siguiendo la emisin de
mensajes LBE742x. Entonces, el programa contina si hay un procedimiento
USE o una clusula FILE STATUS.
Con *NOSTDERR, los mensajes LBE702x provocan que el programa finalice
sin establecer un estado de archivo.
Finalizacin de un programa debido al estado archivo 9P o 90:
Con *STDERR, un estado de archivo 9P o 90 que surge de un error de E/S
(sealado mediante los mensajes CPF4xxx y CPF5xxx) no hace que el programa finalice mientras haya un procedimiento USE o una clusula FILE
STATUS. Si no existe ninguno, se emite un mensaje de error LBE7207.
Con *NOSTDERR, un estado de archivo 9P 90 en la ausencia de un procedimiento USE provoca la emisin del mensaje de error LBE7200 y la finalizacin del programa.
|
|

Emisin de un mensaje de error para cualquier estado de archivo cuyo primer


carcter no sea cero cuando no hay manejador de error ni la clusula FILE
STATUS:

Captulo 6. Manejo de Errores y Excepciones COBOL/400

83

|
|

Con *STDERR, cualquier estado de archivo cuyo primer carcter no sea cero
cuando no hay la frase AT END/INVALID KEY, el procedimiento USE, ni la
clusula FILE STATUS, origina la emisin de un mensaje de consulta LBE7207
(con las opciones de respuesta C, D, F y G).

|
|

Con *NOSTDERR, cualquier estado de archivo cuyo primer carcter no sea


cero cuando no hay ninguna frase AT END/INVALID ni procedimiento USE
permite al programa continuar a no ser que ya haya finalizado.

Proceso de Verbos de E/S


El siguiente diagrama muestra cundo se ejecutan el procedimiento USE y las instrucciones imperativas (NOT) AT END, (NOT) INVALID KEY y NO DATA. Este
proceso se mantiene desde la Versin 1 Release 3 y es independiente del mtodo
de manejo de errores que se elija (*STDERR o *NOSTDERR).
Observe que el estado de archivo que se muestra aqu hace referencia al estado
de archivo interno.
Se ha establecido
el estado de archivo

Cul
el

es

carcter

El
2

su p erior

que

la

carcter

se

encuentra

No

Existe

un

procedimiento

de estado ms a

ms

la

izquierda

el

procedimiento
U S E

U S E ?

izquierda?

E je c u ta r
S

es el 2?

E je c u ta r

E x is te
S
una
AT

la

frase

sentencia

imperativa

END?

AT

E x is te
una

E x is te

E je c u ta r

frase

I N VA L I D

K E Y ?

END

la

sentencia

imperativa
I N VA L I D

No

un

No

K E Y

No

E je c u ta r
S

procedimiento
U S E ?

el

procedimiento
U S E

No

Continuar
programa

el

COBOL

N o ta :

Figura 26 (Parte 1 de 2). Proceso de Verbos de E/S

84

COBOL/400 Gua del usuario

= Ir a

en la pgina siguiente

La
condicin

Ejecutar la

Existe
S
una

N O D ATA e s

frase

sentencia imperativa
NO DATA

N O D ATA ?
verdadera?

No

El

Existe

carcter

una

d e l e s ta d o d e

NOT

arc hivo es

Ejecutar la

S
m s a la izq uierd a

frase

sentencia imperativa

I N VA L I D

N O T I N VA L I D

KEY

K E Y ?

el 0?

No

El
carcter

S
m s a la izq uierd a
d e l e s ta d o d e

Existe
una

Ejecutar la

frase

sentencia imperativa

N O T AT

N O T AT E N D

arc hivo es

END?
el 0?

No

No

Continuar
el programa COBOL

Figura 26 (Parte 2 de 2). Proceso de Verbos de E/S

Nota: Siga las partes del diagrama que se apliquen en sus instrucciones.

Excepciones Comunes y Algunas de sus Causas


Error de datos decimales MCH1202:
Se ha utiliza un tem numrico elemental como un fuente cuando se han almacenado anteriormente datos no vlidos en l. El tem debe tener una clusula
VALUE, o debe utilizarse una instruccin MOVE para inicializar su valor.
Se ha realizado un intento para colocar los datos no numricos en un tem
numrico.
Se han grabado datos defectuosos a un subarchivo al principio del programa.
Los datos del subarchivo no se validarn hasta que no aparezcan en pantalla.
Es por eso que se puede producir el error 1202 en la WRITE de un registro de
control del subarchivo, pero en realidad los datos defectuosos se han colocado
antes en el subarchivo.
Excepciones del puntero MCH0601:
Parte de un tem de seccin de enlace fuera del espacio asignado.

Captulo 6. Manejo de Errores y Excepciones COBOL/400

85

Por ejemplo, si se establece la direccin de tem de seccin de enlace y uno o


ms de estos tems de datos elementales se extiende fuera del espacio con
una MOVE al tem de datos elementales, se emite MCH0601.
Para obtener ms informacin sobre cmo utilizar los punteros, consulte el
apartado Utilizacin de Punteros en un Programa COBOL/400 en la
pgina 295.
Alineacin del puntero MCH0602:
La alineacin del puntero de la Seccin del almacenamiento de trabajo del programa de llamada no coincide con la alineacin de la Seccin de enlace del
programa llamado. La alineacin tiene como lmite 16 bytes.
Para obtener ms informacin sobre cmo utilizar los punteros, consulte la Utilizacin de Punteros en un Programa COBOL/400 en la pgina 295.
Error del puntero MCH3601:
Se realiza una referencia a un registro o un campo dentro de un registro y se
ha cerrado el archivo asociado o nunca se ha abierto.
Por ejemplo, OPEN para el archivo no ha sido satisfactorio y se ha intentado
efectuar el proceso de cualquier instruccin de E/S para ese archivo. El
estado de archivo debe comprobarse antes de que se intente cualquier otra
E/S.
Fin de solicitudes CPF2415:
Se ha intentado acceder a la entrada desde la corriente de entrada de trabajos
mientras el sistema se ejecutaba en modalidad por lotes y no hay entrada disponible.

Recuperacin de una Anomala


Recuperacin con control de compromiso
Cuando se vuelve a arrancar el sistema despus de una anomala, los archivos
bajo el control de compromiso se restauran automticamente a su estado en el
ltimo lmite de compromiso. Para obtener informacin adicional acerca del control
de compromiso, consulte el apartado Consideraciones sobre Control de
Compromiso en la pgina 99.
En una anomala de trabajo (debido a un error del usuario o del sistema) los
archivo bajo control de compromiso se restauran como parte de la finalizacin de
trabajo al estado de archivo del lmite de compromiso anterior.
Debido a que los archivos bajo control de compromiso se retrotraen despus de
una anomala del sistema o del proceso, esta caracterstica puede utilizarse como
ayuda en la reiniciacin del sistema. Se puede crear un registro separado para
almacenar datos que pueden utilizarse si fuera necesario al reiniciar un trabajo.
Estos datos de reinicio pueden incluir tems como totales, contadores, valores de
claves de registro, valores de claves relativos y otras informaciones importantes del
proceso de una aplicacin.
Si mantiene los datos de reinicio mencionados anteriormente en un archivo bajo
control de compromiso, los datos de reinicio tambin se almacenarn permanen-

86

COBOL/400 Gua del usuario

temente en la base de datos cuando se emite una instruccin COMMIT. Cuando


se produce una ROLLBACK despus de una anomala de trabajo o de proceso,
puede recuperar un registro de la ampliacin de proceso realizado satisfactoriamente antes de la anomala. Observe que el mtodo anterior slo es una
tcnica de programacin sugerida, y no siempre ser lo idneo, dependiendo de la
aplicacin.

Recuperacin del Archivo TRANSACTION


En algunos casos, se pueden recuperar errores de E/S en archivos
TRANSACTION sin la intervencin del operador, o sin desactivar/activar las
estaciones de trabajo o los dispositivos de comunicaciones.
En errores de E/S potencialmente recuperables en archivos TRANSACTION, el
sistema inicia la accin adems de los pasos que han de tomarse en el programa
de aplicacin para intentar la recuperacin del error. Para obtener ms informacin sobres las acciones que realiza el sistema, consulte la publicacin Remote
Work Station Guide.
Examinando el estado de archivo despus de un operacin de E/S, el programa de
aplicacin puede determinar si es posible efectuar una recuperacin de un error de
E/S en el archivo TRANSACTION. Si la Clave de estado de archivo tiene un valor
9N, el programa de aplicacin podr recuperar el error de E/S. Un procedimiento
de recuperacin debe codificarse como parte del programa de aplicacin; adems,
vara dependiendo de si el archivo TRANSACTION ha adquirido un dispositivo
nico o de si los dispositivos mltiples estaban conectados.
Para un archivo con un dispositivo adquirido:
1. Cierre el archivo TRANSACTION con el error de E/S.
2. Vuelva a abrir el archivo.
3. Procese los pasos necesarios para volver a intentar la operacin de E/S
anmala. Esto puede implicar cierto nmero de pasos, dependiendo del tipo de
dispositivo de programa utilizado. (Por ejemplo, si la ltima operacin de E/S
fue READ, deben repetirse una o ms instrucciones WRITE que se procesaron
antes que la instruccin READ.) Para obtener ms informacin acerca de los
procedimientos de recuperacin, consulte la publicacin ICF Programmers
Guide.
Para un archivo de pantalla con mltiples dispositivos adquiridos:
1. Procese DROP del dispositivo de programa que ha provocado el error de E/S
en el archivo TRANSACTION.
2. Procese ACQUIRE del mismo dispositivo de programa.
3. Consulte el paso 3 descrito anteriormente.
Para un archivo ICF con mltiples dispositivos adquiridos:
1. Procese ACQUIRE del mismo dispositivo de programa.
2. Consulte el paso 3 descrito anteriormente.
Para un archivo de pantalla con mltiples dispositivos adquiridos:
Los intentos de recuperar un programa de aplicacin deben intentarse normalmente slo una vez.
Captulo 6. Manejo de Errores y Excepciones COBOL/400

87

Si falla el intento de recuperacin:


Si el archivo tiene conectado un solo dispositivo de programa, termine el programa mediante el proceso de la instruccin STOP RUN, EXIT PROGRAM o
GOBACK e intente localizar el origen del error.
Si el archivo tiene mltiples dispositivos de programa adquiridos, es posible
que desee efectuar una de las siguientes acciones:
Continuar con el proceso sin el dispositivo del programa que ha provocado
el error de E/S en el archivo TRANSACTION y volver a adquirir ms tarde
el dispositivo.
Terminar el programa.
Para obtener una descripcin sobre los cdigos de retorno principales y secundarios que pueden servir de ayuda para diagnosticar errores de E/S en el archivo
TRANSACTION, consulte el manual ICF Programmers Guide o la publicacin Gua
para la Gestin de Datos.
La Figura 27 en la pgina 89 muestra un ejemplo de un procedimiento de recuperacin de errores.

88

COBOL/400 Gua del usuario

G X 2 1 - 9 8 9 1 - 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
Inter national

Business

Machines

*El

Archivo

Signo

nm e ro

de

hojas

por

rea

de

Impreso
re lleno

Descripcin

puede

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

1 8

19

D E

2 0

2 1

2 2

2 3

2 4

2 5

2 6

2 7

2 8

P A N T A L L A

2 9

3 0

3 1

3 2

3 3

3 4

P A R A

3 5

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

A R C H I VO

Tipo Datos/Desp lazamien to Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A *

Longitud

3 6

U t i l i z a c/i n

N om b re

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Co ndicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

E J E MP L O

P os

4 2

4 3

4 4

4 5

D E

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

R E C U P E R AC I ON

5 9

6 0

D E

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

E R R OR

A *
A
A

I ND A R A
R

F O R MA T 1

C F 0 1 ( 0 1

'

I N

D E

P R OG R A M A '

A *
A
A
A

I N P U T F L D

1 2

2 8

1 2

4 2

2 8

2 6

'

I N T R OD U C I R

'

F 1

E N T R AD A

T E R M I N A R

'

'

A
A
A
A
A
A
A
A
A
A
A
A

Figura 27. Ejemplo de un Procedimiento de Recuperacin de Errores -- DDS

Captulo 6. Manejo de Errores y Excepciones COBOL/400

89

8 0

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. RECOVERY.
3 3 ENVIRONMENT DIVISION.
4 4 CONFIGURATION SECTION.
5 5 SOURCE-COMPUTER. IBM-AS4.
6 6 OBJECT-COMPUTER. IBM-AS4.
7 7 INPUT-OUTPUT SECTION.
8 8 FILE-CONTROL.
9 9
SELECT RECOVFILE
1 1
ASSIGN TO WORKSTATION-RECVFILE-SI
11 11
ORGANIZATION IS TRANSACTION
12 12
ACCESS MODE IS SEQUENTIAL
13 13
FILE STATUS IS STATUS-FLD, STATUS-FLD-2
14 14
CONTROL-AREA IS CONTROL-FLD.
15 15
SELECT PRINTER-FILE
16 16
ASSIGN TO PRINTER-QPRINT.
17
17 18 DATA DIVISION.
18 19 FILE SECTION.
19 2 FD RECOVFILE
2 21
LABEL RECORDS ARE OMITTED
21 22
DATA RECORD IS RECOV-REC.
22 23 1 RECOV-REC.
23 24
COPY DDS-ALL-FORMATS OF RECVFILE.
24 +1
5 RECVFILE-RECORD PIC X(5).
+2\ INPUT FORMAT:FORMAT1
FROM FILE RECVFILE
OF LIBRARY COBNATEX
+3\
25 +4
5 FORMAT1-I
REDEFINES RECVFILE-RECORD.
26 +5
6 INPUTFLD
PIC X(5).
+6\ OUTPUT FORMAT:FORMAT1
FROM FILE RECVFILE
OF LIBRARY COBNATEX
+7\
+8\
5 FORMAT1-O
REDEFINES RECVFILE-RECORD.
25
27 26 FD PRINTER-FILE.
28 27 1 PRINTER-REC.
29 28
5 PRINTER-RECORD
PIC X(132).
29
3 3 WORKING-STORAGE SECTION.
31
31 32 1 I-O-VERB
PIC X(1).
32 33 1 STATUS-FLD
PIC X(2).
33 34
88 NO-ERROR
VALUE "".
34 35
88 ACQUIRE-FAILED
VALUE "9H".
35 36
88 TEMPORARY-ERROR
VALUE "9N".
36 37 1 STATUS-FLD-2
PIC X(4).
37 38 1 CONTROL-FLD.
38 39
5 FUNCTION-KEY
PIC X(2).
39 4
5 PGM-DEVICE-NAME
PIC X(1).
4 41
5 RECORD-FORMAT
PIC X(1).
41 42 1 END-INDICATOR
PIC 1
INDICATOR 1
42 43
VALUE B"".
43 44
88 END-NOT-REQUESTED
VALUE B"".
44 45
88 END-REQUESTED
VALUE B"1".
45 46 1 USE-PROC-FLAG
PIC 1
46 47
VALUE B"".
47 48
88 USE-PROC-NOT-EXECUTED
VALUE B"".
48 49
88 USE-PROC-EXECUTED
VALUE B"1".
49 5 1 RECOVERY-FLAG
PIC 1
5 51
VALUE B"".
51 52
88 NO-RECOVERY-DONE
VALUE B"".
52 53
88 RECOVERY-DONE
VALUE B"1".
53 54 1 HEADER-LINE.
54 55
5 FILLER
PIC X(6)
55 56
VALUE SPACES.
56 57
5 FILLER
PIC X(72)
57 58
VALUE "ERROR REPORT".
58 59 1 DETAIL-LINE.
59 6
5 FILLER
PIC X(15)
6 61
VALUE SPACES.
61 62
5 DESCRIPTION
PIC X(25)
62 63
VALUE SPACES.
63 64
5 DETAIL-VALUE
PIC X(92)
64 65
VALUE SPACES.

NOMCOPIA

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 28 (Parte 1 de 3). Ejemplo de un Procedimiento de Recuperacin de Errores

90

COBOL/400 Gua del usuario

FECH/CAM
2/1/94
2/5/94
2/1/94
2/1/94
2/2/94
2/2/94
2/1/94
2/1/94
2/5/94
3/22/94
2/5/94
2/1/94
2/5/94
2/5/94
2/5/94
2/5/94
2/1/94
2/1/94
2/1/94
2/5/94
2/5/94
2/5/94
2/5/94
3/22/94

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
65 66 1 MESSAGE-LINE.
66 67
5 FILLER
PIC X(15)
67 68
VALUE SPACES.
68 69
5 DESCRIPTION
PIC X(117)
69 7
VALUE SPACES.
7 71 PROCEDURE DIVISION.
72 DECLARATIVES.
73 HANDLE-ERRORS SECTION.
74
USE AFTER STANDARD ERROR PROCEDURE ON RECOVFILE. .1/
75 DISPLAY-ERROR.
71 76
SET USE-PROC-EXECUTED TO TRUE.
72 77
WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE.
73 78
MOVE "ERROR OCCURRED IN" TO DESCRIPTION OF DETAIL-LINE.
74 79
MOVE I-O-VERB TO DETAIL-VALUE OF DETAIL-LINE.
75 8
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES.
76 81
MOVE "FILE STATUS =" TO DESCRIPTION OF DETAIL-LINE.
77 82
MOVE STATUS-FLD TO DETAIL-VALUE OF DETAIL-LINE. .2/
78 83
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
79 84
MOVE "EXTENDED FILE STATUS =" TO DESCRIPTION OF DETAIL-LINE.
8 85
MOVE STATUS-FLD-2 TO DETAIL-VALUE OF DETAIL-LINE.
81 86
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
82 87
MOVE "CONTROL-AREA =" TO DESCRIPTION OF DETAIL-LINE.
83 88
MOVE CONTROL-FLD TO DETAIL-VALUE OF DETAIL-LINE.
84 89
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
9 CHECK-ERROR.
85 91
IF TEMPORARY-ERROR AND NO-RECOVERY-DONE THEN
86 92
MOVE "\\\ERROR RECOVERY BEING ATTEMPTED\\\" .3/
93
TO DESCRIPTION OF MESSAGE-LINE
87 94
WRITE PRINTER-REC FROM MESSAGE-LINE
95
AFTER ADVANCING 3 LINES
88 96
PERFORM ERROR-RECOVERY
97
ELSE
89 98
IF RECOVERY-DONE THEN .4/
9 99
MOVE "\\\ERROR AROSE FROM RETRY AFTER RECOVERY\\\"
1
TO DESCRIPTION OF MESSAGE-LINE
91 11
WRITE PRINTER-REC FROM MESSAGE-LINE
12
AFTER ADVANCING 3 LINES
92 13
MOVE "\\\PROGRAM TERMINATED\\\"
14
TO DESCRIPTION OF MESSAGE-LINE
93 15
WRITE PRINTER-REC FROM MESSAGE-LINE
16
AFTER ADVANCING 2 LINES
94 17
GO TO ERROR-EXIT
18
ELSE
95 19
SET NO-RECOVERY-DONE TO TRUE.
96 11
MOVE "\\\EXECUTION CONTINUES\\\"
111
TO DESCRIPTION OF MESSAGE-LINE.
97 112
WRITE PRINTER-REC FROM MESSAGE-LINE
113
AFTER ADVANCING 2 LINES.
98 114
GO TO END-OF-DECLARATIVES.
115 ERROR-RECOVERY.
99 116
SET RECOVERY-DONE TO TRUE.
1 117
DROP PGM-DEVICE-NAME FROM RECOVFILE.
11 118
ACQUIRE PGM-DEVICE-NAME FOR RECOVFILE. .5/
119 ERROR-EXIT.
12 12
CLOSE RECOVFILE
121
PRINTER-FILE.
122 END-OF-DECLARATIVES.
123 END DECLARATIVES.
124
125 MAIN-PROGRAM SECTION.
126 MAINLINE.
13 127
MOVE "OPEN" TO I-O-VERB.
14 128
OPEN I-O
RECOVFILE
129
OUTPUT PRINTER-FILE.
15 13
PERFORM I-O-PARAGRAPH UNTIL END-REQUESTED. .6/
16 131
CLOSE RECOVFILE
132
PRINTER-FILE.
17 133
STOP RUN.
134 I-O-PARAGRAPH.
18 135
MOVE "WRITE" TO I-O-VERB.
19 136
SET USE-PROC-NOT-EXECUTED TO TRUE.
11 137
WRITE RECOV-REC FORMAT IS "FORMAT1"
138
INDICATOR IS END-INDICATOR.
111 139
IF USE-PROC-EXECUTED AND RECOVERY-DONE THEN .7/
112 14
GO TO I-O-PARAGRAPH.

NOMCOPIA

FECH/CAM

Figura 28 (Parte 2 de 3). Ejemplo de un Procedimiento de Recuperacin de Errores

Captulo 6. Manejo de Errores y Excepciones COBOL/400

91

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
113 141
MOVE "READ" TO I-O-VERB.
114 142
SET USE-PROC-NOT-EXECUTED TO TRUE.
115 143
SET NO-RECOVERY-DONE TO TRUE.
116 144
READ RECOVFILE FORMAT IS "FORMAT1"
145
INDICATOR IS END-INDICATOR. .8/
117 146
IF NO-ERROR THEN
118 147
PERFORM SOME-PROCESSING.
148 SOME-PROCESSING.
119 149
(INSERT SOME DATABASE PROCESSING, FOR EXAMPLE).
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 28 (Parte 3 de 3). Ejemplo de un Procedimiento de Recuperacin de Errores

92

.1/

Define el proceso que se produce cuando hay un error de E/S en


RECOVFILE.

.2/

Imprime informacin para ayudar en el diagnstico del problema.

.3/

Si el estado de archivo es igual a 9N (error transitorio) y no se ha intentado


ninguna recuperacin anterior de error para esta operacin de E/S, se
intenta ahora la recuperacin del error.

.4/

Para evitar un bucle en un programa, ahora no se intenta la recuperacin si


se ha intentado anteriormente.

.5/

La recuperacin consiste en desactivar y volver a adquirir el dispositivo de


programa en el que se ha producido el error de E/S.

.6/

La tarea principal del programa consiste en escribir y leer en un dispositivo


hasta que el usuario indique un final de programa pulsando F1.

.7/

Si la operacin WRITE ha sido anmala pero se ha efectuado la recuperacin, se intenta de nuevo WRITE.

.8/

Si la operacin READ ha sido anmala, el proceso continuar escribiendo


otra vez en el dispositivo, e intentando luego de nuevo READ.

COBOL/400 Gua del usuario

Captulo 7. Gestin de Archivos y Datos


Este captulo contiene informacin general acerca de la gestin de archivos y datos
que le pueden ser tiles al crear aplicaciones COBOL/400.
Este captulo describe:
Las caractersticas de los programas COBOL/400 en el sistema AS/400, tanto
independientes de dispositivos como dependientes de dispositivos
Funciones de spooling de entrada y salida
Consideraciones para la alteracin temporal del sistema
Consideraciones para el bloqueo de archivos y registros
Control de compromiso
Bloqueo y desbloqueo de registros
Estado de archivos y reas de realimentacin
Informacin general acerca de la utilizacin de archivos descritos externamente
y archivos descritos por el programa en un programa COBOL/400
La instruccin COPY de Formato 2 (Opcin DD, DDR, DDS o DDSR).
El nmero mximo 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
visualizacin ampliada, el nmero mximo es 98. Para ms informacin acerca de
la especificacin de las opciones de visualizacin ampliada, consulte la pgina 23 .

Dependencia e Independencia de Dispositivo


El elemento clave para todas las operaciones de E/S en el sistema AS/400 es el
archivo. Todos los archivos utilizados se definen para el sistema operativo. El
sistema operativo mantiene una descripcin de cada archivo utilizado por un programa.
Los archivos se mantienen en lnea y sirven como enlace de conexin entre un
programa y el dispositivo utilizado para E/S. La asociacin de dispositivos reales
se realiza cuando se procesa el archivo. En determinados casos, este tipo de
control de E/S permite que el usuario cambie el atributo del archivo (y en algunos
casos, el dispositivo) utilizado en un programa sin cambiar dicho programa.
En el lenguaje COBOL/400, el nombre de archivo especificado en la entrada
ASSIGNMENT-NAME de la clusula ASSIGN de la entrada de control del archivo
se utiliza para direccionar al archivo. Este nombre del archivo se direcciona a la
descripcin de archivos del sistema:

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
( n o m b r e - a s ig n a c i n )

D E V (Q P R IN T )
Im p re s o ra

Copyright IBM Corp. 1994

93

El nombre de dispositivo COBOL en la clusula ASSIGN define las funciones


COBOL que pueden procesarse en el archivo seleccionado. En tiempo de compilacin, ciertas funciones COBOL son vlidas slo para un nombre de dispositivo
COBOL especfico; en este aspecto, COBOL es dependiente de dispositivo. Los
ejemplos siguientes son de dependencia de dispositivo:
Las operaciones SUBFILE slo son vlidas para un dispositivo
WORKSTATION.
Los indicadores slo son vlidos para dispositivos WORKSTATION o
FORMATFILE.
LINAGE slo es vlida para el dispositivo PRINTER.
OPEN INPUT WITH NO REWIND slo es vlida para el dispositivo TAPEFILE.
Por ejemplo, supongamos que el nombre de archivo FILEY se asocia en el programa COBOL con el dispositivo FORMATFILE. El dispositivo FORMATFILE es
un tipo de dispositivo independiente. Por lo tanto, no hay ninguna especificacin
de lnea o control vlida en el programa COBOL en la instruccin WRITE
ADVANCING. Cuando el programa se ejecuta, el dispositivo de E/S real se especifica en la descripcin de FILEY. Por ejemplo, el dispositivo puede ser una impresora; nicamente se utilizara la lnea por omisin y el control de pginas o
aquellos definidos en el DDS:

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
A S S IG N T O F O R M A T F IL E -F IL E Y

D E V (Q P R IN T )
Im p re s o ra

Los mandatos CL pueden utilizarse para alterar temporalmente un parmetro en la


descripcin de archivo especificada o para volver a dirigir un archivo en tiempo de
compilacin o ejecucin. La redireccin de archivos permite que el usuario especifique un archivo en tiempo de compilacin y otro archivo en tiempo de ejecucin:

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
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 F O R M A T F IL E -F IL E X

M a n d a to d e A lte r a c i n T e m p o r a l:
O V R D K T F F IL E (F IL E X ) T O F IL E (F IL E A )
F IL E A
D is q u e te

T ie m p o d e
E je c u c i n

D E V (Q D K T )

En el ejemplo anterior, el mandato Alterar Temporalmente a Archivo de Disquete


(OVRDKTF) permite que el programa se ejecute con un archivo de dispositivo
completamente distinto al que se especific en tiempo de compilacin.

94

COBOL/400 Gua del usuario

No todas las redirecciones de archivos o alteraciones temporales son vlidas. En


tiempo de ejecucin, se produce una comprobacin para asegurar que las especificaciones dentro del programa COBOL sean vlidas para el archivo a procesar. El
sistema operativo OS/400 permite algunas redirecciones de archivos incluso si el
programa contiene dispositivos especficos. Por ejemplo, si el nombre del dispositivo COBOL es PRINTER y el archivo real que utiliza el programa no es una impresora, el sistema operativo ignora las especificaciones de salto y espaciado de
impresin del COBOL.
Hay otras redirecciones de archivo que no estn permitidas por el sistema operativo y que provocan la terminacin del programa. Por ejemplo, si el nombre de
dispositivo COBOL es DATABASE o DISK y se especifica una operacin 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.
Consulte el apartado Consideraciones acerca de la Alteracin Temporal del
Sistema en la pgina 97 para obtener informacin ms detallada acerca de las
redirecciones y las alteraciones temporales de archivos vlidas.

Spooling
El sistema AS/400 proporciona la utilizacin de funciones de spool de entrada y
salida. Cada descripcin de archivo AS/400 contiene un atributo de spool que
determina si se utiliza el spooling para el archivo en tiempo de ejecucin. El programa COBOL no sabe que est utilizando el spool. El lector o el transcriptor de
spool determinan el dispositivo fsico real desde el que se lee un archivo o al que
se graba un archivo. Consulte la publicacin Gua para la Gestin de Datos para
obtener una informacin ms detallada acerca del spooling.

Spool de Salida
El spool de salida es vlido para los trabajos por lotes e interactivos. La descripcin del archivo que se especifica en COBOL mediante el nombre del sistema contiene la especificacin para el spool, tal como se muestra en el ejemplo siguiente:

Captulo 7. Gestin de Archivos y Datos

95

P ro g ra m a e n C O B O L

A r c h iv o
Q P R IN T

C o la d e
S a lid a

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 -Q P R IN T

S P O O L (*Y E S )
O U T Q (Q P R IN T )

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

Los mandatos de alteracin temporal de archivos pueden utilizarse en tiempo de


ejecucin para alterar temporalmente las funciones que se especifican en la descripcin de archivos, como el nmero de copias a imprimir. Adems, el soporte de
spooling de AS/400 le permitir redirigir un archivo una vez se ha ejecutado el programa. Por ejemplo, podr dirigir la salida de impresora a un dispositivo distinto,
como puede ser un disquete.

Spool de Entrada
El spool de entrada slo es vlido para los archivos de datos incorporados en trabajos 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.
Los datos se leen desde un archivo incorporado en spool:
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
Spool

D E V (Q D K T )
S P O O L (*Y E S )

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 D IS K E T T E -F IL E A

*Y E S

A r c h iv o
en Spool

Consulte la publicacin Gua para la Gestin de Datos para obtener ms informacin acerca de los archivos de datos incorporados.

96

COBOL/400 Gua del usuario

Consideraciones acerca de la Alteracin Temporal del Sistema


Debe especificar cualquier alteracin temporal antes de que el programa COBOL
abra el archivo. El sistema utiliza el mandato de alteracin temporal de archivo
para determinar el archivo que se va a abrir y los atributos del archivo.
La forma ms sencilla de alterar temporalmente un archivo es alterar temporalmente algunos atributos de dicho archivo. Por ejemplo, se especifica
FILE(OUTPUT) con COPIES(2) cuando se crea un archivo de impresora. Antes de
ejecutar un programa COBOL, el nmero de copias impresas de salida puede cambiarse a 3. El mandato de alteracin temporal es el siguiente:
OVRPRTF

FILE(OUTPUT)

COPIES(3)

Otra manera de alterar temporalmente un archivo es redirigiendo el programa


COBOL para que acceda a un archivo distinto. Cuando la alteracin temporal redirige el programa a un archivo del mismo tipo (como, por ejemplo, de un archivo de
impresora a otro archivo de impresora) el archivo se procesa de la misma manera
que el archivo original.
Cuando la alteracin temporal redirige el programa a un archivo de tipo diferente,
el archivo alterado temporalmente se procesa de la misma forma que se procesara el archivo original. Las especificaciones dependientes de dispositivo en el
programa COBOL se ignoran, y el sistema toma los valores por omisin.

No todas las redirecciones de archivos son vlidas. Por ejemplo, un archivo


indexado para un programa COBOL slo puede alterarse temporalmente a otro
archivo indexado con una va de acceso por clave.
Al alterar temporalmente un archivo de base de datos para procesar todos los
miembros se puede conseguir el proceso de mltiples miembros para un archivo
de base de datos. Observe las excepciones siguientes:
No se puede alterar temporalmente un archivo fuente de base de datos utilizado para un programa COBOL para procesar todos los miembros. Al especificar OVRDBF MBR(*ALL) se acaba la compilacin.
No se puede alterar temporalmente un archivo de base de datos utilizado para
una instruccin COPY para procesar todos los miembros. Al especificar
OVRDBF MBR(*ALL) se ignorar la instruccin COPY.
El programador COBOL debe asegurarse de que las alteraciones temporales se
apliquen convenientemente. Para ms informacin acerca de las redirecciones de
archivo vlidas, las caractersticas dependientes de dispositivo ignoradas y los
valores por omisin asumidos, consulte la publicacin Gua para la Gestin de
Datos.

Bloqueo de Archivos y Registros por COBOL


El sistema operativo permite que un estado de bloqueo (exclusivo, de lectura admisible exclusiva, compartido sin actualizacin o compartido para lectura) se site en
un archivo utilizado durante el paso de un trabajo. El archivo puede situarse en un
estado de bloqueo con el mandato Asignar Objeto (ALCOBJ).
Por omisin, el sistema operativo coloca los estados de bloqueo siguientes en
archivos de base de datos cuando los programas COBOL abren los archivos:
Captulo 7. Gestin de Archivos y Datos

97

Tipo OPEN

Estado de Bloqueo

INPUT
I/O

Compartido
Compartido
zacin
Compartido
zacin
Compartido
zacin

EXTEND
OUTPUT

para lectura
para actualipara actualipara actuali-

La modalidad EXTEND es un mtodo para aadir registros al final de un archivo


secuencial cuando se abre el archivo.
El estado de bloqueo compartido para lectura permite que otro usuario abra el
archivo con un estado de bloqueo compartido para lectura, compartido para actualizacin, compartido sin actualizacin y de lectura admisible exclusiva, pero el
usuario no puede especificar el uso exclusivo del archivo. El estado de bloqueo
compartido para actualizacin permite que otro usuario abra el archivo con un
estado de bloqueo compartido para lectura o compartido para actualizacin.
El sistema operativo coloca el bloqueo compartido para lectura en un archivo de
dispositivo y un estado de bloqueo de lectura admisible exclusiva en el dispositivo.
Otro usuario puede abrir el archivo pero no puede utilizar el mismo dispositivo.
Nota: Cuando un programa COBOL abre un archivo fsico para OUTPUT, ese
archivo estar sujeto a un bloqueo exclusivo durante el tiempo necesario
para borrar el miembro.
Para ms informacin acerca de la asignacin de recursos y estados de bloqueo,
consulte la publicacin Gua para la Gestin de Datos.

Bloqueo y Liberacin de Registros


Cuando COBOL lee un registro de base de datos y el archivo se abre para E/S, se
coloca un bloqueo en ese registro de forma que otro programa no pueda actualizarlo. Es decir, otro programa puede leer el registro si abre un archivo para
entrada, pero no si abre el archivo para E/S.
Para ms informacin acerca de la duracin del bloqueo de registro con o sin
control de compromiso, consulte la Tabla 2 en la pgina 101.
Para evitar que la instruccin READ bloquee registros en archivos abiertos en
modalidad de E/S (actualizacin), puede utilizar la frase NO LOCK. La instruccin
READ WITH NO LOCK desbloquea los registros bloqueados por una instruccin
READ anterior. Para ms informacin acerca de esta frase, consulte la seccin de
la instruccin READ en la publicacin COBOL/400 Reference.
Para un archivo lgico basado en un archivo fsico, el bloqueo se coloca en el
registro del archivo fsico. Si un archivo lgico se basa en ms de un archivo
fsico, se coloca un bloqueo en un registro en cada archivo fsico.
Este bloqueo no slo se aplica para otros programas, sino tambin para el programa original si intenta actualizar el mismo registro fsico subyacente a travs de
un segundo archivo.
Nota: Cuando un archivo con organizacin indexada o relativa se abre para E/S,
utilizando acceso al azar o dinmico, una operacin de E/S anmala en

98

COBOL/400 Gua del usuario

cualquier verbo de E/S excepto WRITE tambin desbloquea el registro.


Una operacin WRITE no se considera una operacin de actualizacin; por
lo tanto, no se libera el bloqueo de registro.
Para ms informacin acerca de la liberacin de registros de base de datos ledos
para la actualizacin, consulte la publicacin Gua para la Gestin de Datos.

Posibilidad de Compartir una Va de Datos Abierta


Si ya ha abierto un archivo a travs de otro programa en el paso de
direccionamiento, el programa COBOL puede utilizar la misma Va de de Datos
Abierta (ODP) para acceder al archivo.
Nota: Los pasos de direccionamiento se describen en la publicacin
Programacin: Gua para la Gestin de Trabajos; un trabajo contiene, generalmente, un solo paso de direccionamiento.
Las reglas siguientes se aplican para las ODP compartidas:
1. Debe especificar SHARE(*YES) en el mandato que crea el archivo, en un
mandato de cambio, o en un mandato de alteracin temporal para el archivo.
2. Una vez que un programa abre por primera vez una ODP compartida y permanece abierta, las operaciones OPEN siguientes dentro del mismo paso de
direccionamiento se ejecutan ms rpidamente que las operaciones OPEN
estndar. La velocidad de otras operaciones de E/S que no sean la de apertura no se ver afectada.
3. La utilizacin del archivo dentro de programas diferentes debe ser coherente.
Por ejemplo, si un programa que no sea COBOL realiza una operacin READ
PREVIOUS utilizando E/S bloqueada, la instruccin COBOL READ podra
recuperar el registro que precede a la posicin del archivo actual y no el
registro que sigue a la posicin del archivo actual.

Consideraciones sobre Control de Compromiso


El control de compromiso es una funcin que permite:
La sincronizacin de cambios para archivos de base de datos dentro del
mismo trabajo
La cancelacin de los cambios que no deben entrarse de modo permanente en
la base de datos
El bloqueo de registros que estn modificndose hasta que finalicen los
cambios
Las tcnicas para la recuperacin de anomalas del trabajo o del sistema.
En algunas aplicaciones, sera deseable sincronizar los cambios para los registros
de base de datos. Si el programa determina que los cambios son vlidos, estos se
efectan permanentemente en la base de datos (se procesa una instruccin
COMMIT). Si los cambios no son vlidos, o si se produce un problema durante el
proceso, los cambios pueden cancelarse (se procesa una instruccin ROLLBACK).
Tenga en cuenta que cuando se borra un archivo despus de abrirse para
OUTPUT, el proceso de una instruccin 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 posteriores.
Captulo 7. Gestin de Archivos y Datos

99

Cada punto en el que se procese satisfactoriamente una instruccin COMMIT o


ROLLBACK es un lmite de compromiso. Si todava no se ha emitido ninguna instruccin COMMIT o ROLLBACK en un programa, la primera apertura de cualquier
archivo bajo el control de compromiso crea un lmite de compromiso. El compromiso o retroaccin de cambios afecta nicamente a aquellos cambios que se
hayan hecho desde el anterior lmite de compromiso.
La sincronizacin de cambios en los lmites de compromiso hace ms fciles los
procedimientos de arranque o de recuperacin despus de una anomala. Para
ms informacin, consulte el apartado Recuperacin de una Anomala en la
pgina 86.
Cuando el control de compromiso se utiliza para archivos de base de datos, los
registros de dichos archivos estn sujetos a un nivel de bloqueo superior LCKLVL
(*ALL) o a un nivel de bloqueo inferior LCKLVL(*CHG). Con un nivel de bloqueo
inferior (*CHG), se bloquean todos los registros que se cambian (o vuelven a grabarse, se suprimen o se aaden en archivos bajo el control de compromiso) se
bloquean hasta que se procesa satisfactoriamente una instruccin COMMIT o
ROLLBACK. Con un nivel de bloqueo superior (*ALL), se bloquean todos los
registros accedidos, tanto para entrada como para salida, hasta que se procesa
satisfactoriamente una instruccin COMMIT o una ROLLBACK. Para ambos
niveles de bloqueo de registro, ningn otro trabajo puede modificar los datos en
registros bloqueados hasta que la instruccin COMMIT o la ROLLBACK se haya
completado satisfactoriamente. (Un registro bloqueado slo puede modificarse
dentro del mismo trabajo y a travs del mismo archivo fsico o lgico.)
El nivel de bloqueo tambin controla si pueden leerse los registros bloqueados.
Con un nivel de bloqueo superior (*ALL), no podr leer registros bloqueados en un
archivo de base de datos. Con un nivel de bloqueo inferior (*CHG), podr leer
registros bloqueados en un archivo de base de datos, siempre que el archivo se
abra como INPUT en el trabajo, o que se abra como E/S y se utilice READ WITH
NO LOCK.
|
|
|
|
|

Puede obtenerse un tercer nivel de bloqueo especificando LCKLVL(*CS), en el que


se bloquean todos los registros accedidos desde archivos bajo control de compromiso. Los registros que no se actualizan o se suprimen slo se bloquean hasta
que se haya accedido a un registro distinto. Los registros actualizados, aadidos o
suprimidos se bloquean hasta que la transaccin se ha comprometido o retrotrado.
El resto de los trabajos, en los que los archivos no estn bajo control de compromiso, 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 estn permanentemente comprometidos para
una base de datos. Si se procesa una instruccin ROLLBACK despus de que
otro trabajo haya ledo registros bloqueados, los datos accedidos no reflejarn el
contenido de la base de datos.
La Tabla 2 muestra las consideraciones sobre el bloqueo de registros para
archivos con y sin control de compromiso.

100

COBOL/400 Gua del usuario

Tabla 2. Consideraciones sobre el bloqueo de registros con y sin control de compromiso


VERBO

DELETE

MODALIDAD
APERTURA

NIVEL BLOQUEO

DURACIN DEL BLOQUEO DE REGISTROS


Siguiente
Operacin E/S

6
DELETE
.

I-O
Sin control de compromiso
Con control de compromiso

COMMIT o
ROLLBACK

5
5

*CHG
*ALL

READ

READ
.

INPUT
Sin control de compromiso
Con control de compromiso

*CHG

.
5

*ALL
READ
WITH
NO
LOCK

I-O

READ

I-O

READ
.

Sin control de compromiso


Con control de compromiso

*CHG

.
5

*ALL
Sin control de compromiso
Con control de compromiso

*CHG

READ

5
5

*ALL
REWRITE

REWRITE
.

I-O
Sin control de compromiso
Con control de compromiso

5
5

*CHG
*ALL

START

START
.

INPUT
Sin control de compromiso
Con control de compromiso

*CHG

.
5

*ALL
START

I-O
Sin control de compromiso
Con control de compromiso

*CHG

START

5
5

*ALL
WRITE

WRITE
.

I-O
Sin control de compromiso
Con control de compromiso

*CHG

5
5

*ALL
WRITE

WRITE
.

OUTPUT
Sin control de compromiso
Con control de compromiso

*CHG

5
5

*ALL

Un archivo bajo control de compromiso puede cerrarse o abrirse sin afectar al


estado de los cambios realizados desde el ltimo lmite de compromiso. Debe
emitirse an una instruccin COMMIT para realizar los cambios permanentes, o
emitir una ROLLBACK para cancelar los cambios. Una instruccin COMMIT,
cuando se procesa, deja los archivos en el mismo estado, abierto o cerrado, que
tenan antes del proceso.
Todos los archivos bajo el control de compromiso dentro del mismo trabajo deben
registrarse por diario en el mismo diario. Para ms informacin acerca de la
gestin de diario y de sus funciones relacionadas, as como acerca del control de
compromiso, consulte la publicacin Advanced Backup and Recovery Guide.
El control de compromiso tambin debe especificarse fuera del lenguaje COBOL
mediante el lenguaje de control OS/400 (CL). El mandato Arrancar Control de
Compromiso (STRCMTCTL) establece la posibilidad de control de compromiso y
establece el nivel de bloqueo de registro a nivel superior (*ALL) o a nivel inferior
(*CHG). El mandato STRCMTCTL no inicia automticamente el control de compromiso de un archivo. Dicho archivo tambin debe especificarse en la clusula
COMMITMENT CONTROL del prrafo I-O-CONTROL en el programa COBOL. El
Captulo 7. Gestin de Archivos y Datos

101

entorno de control de compromiso se termina normalmente utilizando el mandato


Finalizar Control de Compromiso (ENDCMTCTL). Esto hace que se cancelen
todos los cambios no comprometidos para archivos de base de datos bajo el
control de compromiso. (Se procesa una instruccin ROLLBACK). Consulte la
publicacin CL Reference para ms informacin acerca de los mandatos
STRCMTCTL y ENDCMTCTL.
Para ms informacin acerca del control de compromiso, consulte la publicacin
Advanced Backup and Recovery Guide.
Nota: La capacidad de evitar la lectura de datos no comprometidos que hayan
sido cambiados es una funcin de control de compromiso y slo est disponible si se trabaja bajo control de compromiso. La extensin de control de
compromiso no modifica el soporte normal de la base de datos (sin compromiso), y permite leer registros bloqueados cuando se lee un archivo
abierto nicamente para entrada. Intente utilizar los archivos de forma
coherente. Normalmente, los archivos deben ejecutarse siempre bajo el
control de compromiso o no ejecutarse nunca bajo control de compromiso.
La Figura 29 en la pgina 103 muestra una utilizacin posible de control de compromiso en un entorno bancario. El programa procesa las transacciones para la
transferencia de fondos de una cuenta a otra. Si no se producen problemas
durante la transaccin, se comprometen los datos para el archivo de base de
datos. Si la transferencia no puede realizarse debido a un nmero de cuenta incorrecto o a fondos insuficientes, se emite una instruccin ROLLBACK para cancelar
los cambios.

102

COBOL/400 Gua del usuario

AS/400 ESPECIFICACIONES DE DESCRIPCION DE DATOS


International Business Machines

A *

10

11

12

13

14

N OM B R E

15

16

17

18

19

20

21

22

23

24

25

D E

A R CH I VO

ACC T P M T

26

27

28

29

30

31

Descripcin

32

33

34

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Nom bre
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

Nombre Condicin

Impreso en Espaa

Pgina

de

Tecla

35

P AN T A L L A

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Com ent. (A/O/*)

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nmero de hojas por rea de relleno puede variar ligeramente.

37

38

D E

Ubicacin

Funciones

Lnea

39

40

41

Pos

42

43

44

45

46

47

SOL I C I T UD

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

' ACC T F M T S '

A *
A

I ND A R A

A
A

T E X T ( ' SOL I C I T UD

CU E N T A

CL I E N T E ' )

CA 0 1 ( 1 5

P R OG R A M A ' )

P U T R E T A I N

OV E R L A Y
MA E S T R A

A
' F I N

3 ' AC T U A L I Z

3 ' N UME R O

A
A

A C C T F R OM

5 Y

0 I

E R RM S G ( ' N UME R O
NO

9 8

A
A

A
A

ACC T T O

5 Y

0 I

VA L I DO '

I N S U F I C I E N T E S
9 8 )

OR I G E N '
CU E N T A

E R RM S G ( ' N UME R O
5
T R A N S AM T
R

1 0 Y 0 2 I

OR I GE N

E R R M S G ( ' F ONDO S

NO

CU E N T A

9 9 )

CU E N T A
3 ' N UME R O

9 7

CU E N T A '

OR I GE N '

E N

D E S T I NO '

2 3CH ECK ( ME )

CU E N T A

2 3CH ECK ( ME )

9 9

A
A

D E

VA L I DO '

3 ' I MP OR T E

CU E N T A

D E S T I NO

9 7 )

T R AN S F E R I DO '

2 3

E R R FMT

9 6

5 ' E S T ADO

9 6

5 ' T ECL A

A R C H I VO
D E

NO

GR A V AC I N

VA L I DO '
NO

VA L I DA '

A
A
A
A
A
A
A
A
A
A
A

Figura 29. Ejemplo de Utilizacin de Control de Compromiso --DDS

Captulo 7. Gestin de Archivos y Datos

103

78

79

80

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
ACCOUNT.
3 3
AUTHOR.
PROGRAMMER NAME.
4 4
INSTALLATION. COBOL DEVELOPMENT CENTRE.
5 5
DATE-WRITTEN. 2/2/88.
8 8
DATE-COMPILED. 5/24/92 14:2:39
.
7 7 ENVIRONMENT DIVISION.
8 8 CONFIGURATION SECTION.
9 9 SOURCE-COMPUTER. IBM-AS4.
1 1 OBJECT-COMPUTER. IBM-AS4.
11 11 INPUT-OUTPUT SECTION.
12 12 FILE-CONTROL.
13 13
SELECT ACCOUNT-FILE ASSIGN TO DATABASE-ACCTMST
14 14
ORGANIZATION IS INDEXED
15 15
ACCESS IS DYNAMIC
16 16
RECORD IS EXTERNALLY-DESCRIBED-KEY
17 17
FILE STATUS IS ACCOUNT-FILE-STATUS.
18 18
SELECT DISPLAY-FILE ASSIGN TO WORKSTATION-ACCTFMTS-SI .1/
19 19
ORGANIZATION IS TRANSACTION.
2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2 21 CONTROL DE E-S
21 22
CONTROL DE COMPROMISO PARA ACCOUNT-FILE. .2/
23\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
22 24 DATA DIVISION.
23 25 FILE SECTION.
24 26 FD ACCOUNT-FILE
25 27
LABEL RECORDS ARE STANDARD.
26 28 1 ACCOUNT-RECORD.
27 29
COPY DDS-ALL-FORMATS OF ACCTMST.
28 +1
5 ACCTMST-RECORD PIC X(82).
<-ALL-FMTS
+2\
FORMATO E-S:ACCNTREC DESDE ARCHIVO ACCTMST
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+3\
<-ALL-FMTS
+4\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO ACCNTREC
<-ALL-FMTS
+5\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
<-ALL-FMTS
+6\
1
ACCNTKEY
ASCENDENTE CON SIGNO NO
<-ALL-FMTS
29 +7
5 ACCNTREC
REDEFINES ACCTMST-RECORD.
<-ALL-FMTS
3 +8
6 ACCNTKEY
PIC S9(5).
<-ALL-FMTS
31 +9
6 NAME
PIC X(2).
<-ALL-FMTS
32 +1
6 ADDR
PIC X(2).
<-ALL-FMTS
33 +11
6 CITY
PIC X(2).
<-ALL-FMTS
34 +12
6 STATE
PIC X(2).
<-ALL-FMTS
35 +13
6 ZIP
PIC S9(5).
<-ALL-FMTS
36 +14
6 BALANCE
PIC S9(8)V9(2).
<-ALL-FMTS
3
37 31 FD DISPLAY-FILE
38 32
LABEL RECORDS ARE STANDARD.
39 33 1 DISPLAY-REC.
4 34
COPY DDS-ALL-FORMATS OF ACCTFMTS.
41 +1
5 ACCTFMTS-RECORD PIC X(2).
<-ALL-FMTS
+2\ FORMATO ENTRADA:ACCTPMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+3\
SOLICITUD CUENTA CLIENTE
<-ALL-FMTS
42 +4
5 ACCTPMT-I
REDEFINES ACCTFMTS-RECORD.
<-ALL-FMTS
43 +5
6 ACCTFROM
PIC S9(5).
<-ALL-FMTS
44 +6
6 ACCTTO
PIC S9(5).
<-ALL-FMTS
45 +7
6 TRANSAMT
PIC S9(8)V9(2).
<-ALL-FMTS
+8\ FORMATO SALIDA:ACCTPMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+9\
SOLICITUD CUENTA CLIENTE
<-ALL-FMTS
+1\
5 ACCTPMT-O
REDEFINES ACCTFMTS-RECORD.
<-ALL-FMTS
+11\ FORMATO ENTRADA:ERRFMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+12\
<-ALL-FMTS
+13\
5 ERRFMT-I
REDEFINES ACCTFMTS-RECORD.
<-ALL-FMTS
+14\ FORMATO SALIDA:ERRFMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+15\
<-ALL-FMTS
+16\
5 ERRFMT-O
REDEFINES ACCTFMTS-RECORD.
<-ALL-FMTS
46 35 WORKING-STORAGE SECTION.
47 36 77 ACCOUNT-FILE-STATUS
PIC X(2).

Figura 30 (Parte 1 de 3). Ejemplo de la Utilizacin del Control de Compromiso

104

COBOL/400 Gua del usuario

FECH/CAM
2/1/94
2/4/94
1/27/94
1/27/94
2/4/94
3/1/94
1/27/94
1/27/94
1/27/94
1/27/94
1/27/94
1/27/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94

5763CB1 V3RM5
AS/4 COBOL Source
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
48 37 77 IND-ON
PIC 1
VALUE B"1".
49 38 77 IND-OFF
PIC 1
VALUE B"".
5 39 1 DISPFILE-INDICS.
51 4
COPY DDS-ALL-FORMATS-INDIC OF ACCTFMTS. .3/
52 +1
5 ACCTFMTS-RECORD.
<-ALL-FMTS
+2\ FORMATO ENTRADA:ACCTPMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+3\
SOLICITUD CUENTA CLIENTE
<-ALL-FMTS
53 +4
6 ACCTPMT-I-INDIC.
<-ALL-FMTS
54 +5
7 IN15
PIC 1 INDIC 15.
<-ALL-FMTS
+6\
FIN DE PROGRAMA
<-ALL-FMTS
55 +7
7 IN97
PIC 1 INDIC 97.
<-ALL-FMTS
+8\
NMERO DE CUENTA DESTINO NO VLIDO
<-ALL-FMTS
56 +9
7 IN98
PIC 1 INDIC 98.
<-ALL-FMTS
+1\
FONDOS INSUFICIENTES EN CUENTA ORIGEN
<-ALL-FMTS
57 +11
7 IN99
PIC 1 INDIC 99.
<-ALL-FMTS
+12\
NMERO DE CUENTA ORIGEN NO VLIDO
<-ALL-FMTS
+13\ FORMATO SALIDA:ACCTPMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+14\
SOLICITUD CUENTA CLIENTE
<-ALL-FMTS
58 +15
6 ACCTPMT-O-INDIC.
<-ALL-FMTS
59 +16
7 IN97
PIC 1 INDIC 97.
<-ALL-FMTS
+17\
NMERO DE CUENTA DESTINO NO VLIDO
<-ALL-FMTS
6 +18
7 IN98
PIC 1 INDIC 98.
<-ALL-FMTS
+19\
FONDOS INSUFICIENTES EN CUENTA ORIGEN
<-ALL-FMTS
61 +2
7 IN99
PIC 1 INDIC 99.
<-ALL-FMTS
+21\
NMERO DE CUENTA ORIGEN NO VLIDO
<-ALL-FMTS
+22\ FORMATO ENTRADA:ERRFMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+23\
<-ALL-FMTS
+24\
6 ERRFMT-I-INDIC.
<-ALL-FMTS
+25\ FORMATO SALIDA:ERRFMT
DESDE ARCHIVO ACCTFMTS
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+26\
<-ALL-FMTS
62 +27
6 ERRFMT-O-INDIC.
<-ALL-FMTS
63 +28
7 IN95
PIC 1 INDIC 95.
<-ALL-FMTS
64 +29
7 IN96
PIC 1 INDIC 96.
<-ALL-FMTS
41
65 42 PROCEDURE DIVISION.
43 DECLARATIVES.
44 ERROR-SECTION SECTION.
45
USE AFTER STANDARD EXCEPTION PROCEDURE ON ACCOUNT-FILE.
46 ERROR-PARAGRAPH.
66 47
IF ACCOUNT-FILE-STATUS IS NOT EQUAL "23" THEN
67 48
MOVE IND-ON TO IN96 OF ERRFMT-O-INDIC
.4/
49
ELSE
68 5
MOVE IND-ON TO IN95 OF ERRFMT-O-INDIC. .5/
69 51
WRITE DISPLAY-REC FORMAT IS "ERRFMT"
52
INDICATORS ARE ERRFMT-O-INDIC.
7 53
READ DISPLAY-FILE.
71 54
CLOSE DISPLAY-FILE
55
ACCOUNT-FILE.
72 56
STOP RUN.
57 END DECLARATIVES.
58 MAIN-PROGRAM SECTION.
59 MAINLINE.
73 6
OPEN I-O DISPLAY-FILE
61
I-O ACCOUNT-FILE.
74 62
MOVE ZEROS TO ACCTPMT-I-INDIC
63
ACCTPMT-O-INDIC.
75 64
PERFORM WRITE-READ-DISPLAY.
76 65
PERFORM VERIFY-ACCOUNT-NO UNTIL IN15 EQUAL IND-ON.
77 66
CLOSE DISPLAY-FILE
67
ACCOUNT-FILE.
78 68
STOP RUN.
69 VERIFY-ACCOUNT-NO.
79 7
PERFORM VERIFY-TO-ACCOUNT.
8 71
IF IN97 OF ACCTPMT-O-INDIC EQUAL IND-OFF THEN
81 72
PERFORM VERIFY-FROM-ACCOUNT.
82 73
PERFORM WRITE-READ-DISPLAY.
74 VERIFY-FROM-ACCOUNT.
83 75
MOVE ACCTFROM TO ACCNTKEY.
84 76
READ ACCOUNT-FILE
85 77
INVALID KEY MOVE IND-ON TO IN99 OF ACCTPMT-O-INDIC.
86 78
IF IN99 OF ACCTPMT-O-INDIC EQUAL IND-ON THEN .6/
79\
\
8
ROLLBACK
81\
\
87 82
ELSE
88 83
PERFORM UPDATE-FROM-ACCOUNT.

FECH/CAM

Figura 30 (Parte 2 de 3). Ejemplo de la Utilizacin del Control de Compromiso

Captulo 7. Gestin de Archivos y Datos

105

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
84 VERIFY-TO-ACCOUNT.
89 85
MOVE ACCTTO TO ACCNTKEY.
9 86
READ ACCOUNT-FILE
91 87
INVALID KEY MOVE IND-ON TO IN97 OF ACCTPMT-O-INDIC. .7/
92 88
IF IN97 OF ACCTPMT-O-INDIC EQUAL IND-ON THEN
89\
\
9
ROLLBACK .8/
91\
\
93 92
ELSE
94 93
PERFORM UPDATE-TO-ACCOUNT.
94 UPDATE-TO-ACCOUNT.
95 95
ADD TRANSAMT TO BALANCE.
96 96
REWRITE ACCOUNT-RECORD.
97 UPDATE-FROM-ACCOUNT.
97 98
SUBTRACT TRANSAMT FROM BALANCE.
98 99
REWRITE ACCOUNT-RECORD.
99 1
IF BALANCE IS LESS THAN THEN
1 11
MOVE IND-ON TO IN98 OF ACCTPMT-O-INDIC
12\
\
13
ROLLBACK .9/
14\
\
11 15
ELSE
16\
\
17
COMMIT. .1/
18\
\
12 19 WRITE-READ-DISPLAY.
13 11
WRITE DISPLAY-REC FORMAT IS "ACCTPMT"
111
INDICATORS ARE ACCTPMT-O-INDIC. .11/
14 112
MOVE ZEROS TO ACCTPMT-I-INDIC
113
ACCTPMT-O-INDIC.
15 114
READ DISPLAY-FILE RECORD
115
INDICATORS ARE ACCTPMT-I-INDIC.
116
\ \ \ \ \
F I N
D E L F U E N T E \ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 30 (Parte 3 de 3). Ejemplo de la Utilizacin del Control de Compromiso

106

.1/

Se proporciona un rea de indicadores separada para el programa.

.2/

La clusula COMMITMENT CONTROL especifica los archivos que han de


ponerse bajo control de compromiso. Todos los archivos que se nombren en
esta clusula quedan afectados por los verbos COMMIT y ROLLBACK.

.3/

La instruccin COPY de Formato 2 con el atributo de indicador INDIC,


define las entradas de descripcin de datos en WORKING-STORAGE para
los indicadores que el programa va a utilizar.

.4/

Se activa IN96 si hay un estado de archivo no vlido.

.5/

Se activa IN95 si hay una condicin INVALID KEY en la operacin


REWRITE.

.6/

Se activa IN99 si el nmero de cuenta entrado para la cuenta a la que se


transfiere el dinero no es vlido.

.7/

Se activa IN97 si el nmero de cuenta entrado para la cuenta a la que debe


transferirse el dinero no es vlido.

.8/

Si se produce la condicin INVALID KEY en la instruccin READ, se utiliza


una ROLLBACK y el bloqueo de registro colocado en el registro despus de
la primera instruccin READ se libera.

.9/

Si no se permite la transferencia de fondos (se ha activado un indicador), se


procesa la instruccin ROLLBACK. Se cancelan todos los cambios realizados en archivos de base de datos bajo control de compromiso.

COBOL/400 Gua del usuario

.1/

Si la transferencia de fondos ha sido vlida (no se han activado indicadores), se procesa la instruccin COMMIT, y todos los cambios realizados
en los archivos de base de datos bajo control de compromiso sern permanentes.

.11/

La frase INDICATORS es necesaria para las opciones en la pantalla de


estacin de trabajo que se controlan mediante los indicadores.

Desbloqueo de Registros de Entrada y Bloqueo de Registros de Salida


Un bloque contiene ms de un registro. Para aumentar el rendimiento en las operaciones de entrada y salida, el compilador COBOL genera cdigos para desbloquear registros de entrada y bloquear registros de salida si se producen todas las
condiciones siguientes:
1. Se especifica *NOBLK (con o sin una clusula BLOCK CONTAINS) y si se dan
todas las condiciones siguientes:
a. Para el archivo se especifica ACCESS IS SEQUENTIAL.
b. El archivo slo se abre para INPUT o OUTPUT en ese programa.
c. El archivo se asigna a DISK, DATABASE, DISKETTE o TAPEFILE.
d. No se especifican instrucciones START para el archivo.
En la organizacin RELATIVE, no se efecta bloqueo para OPEN OUTPUT.
Si se especifica BLOCK CONTAINS, se ignorar excepto para archivos de
cinta. En los archivos de cinta, la clusula BLOCK CONTAINS controla el
nmero de registros que se han de bloquear. Si no se especifica BLOCK
CONTAINS, el sistema determinar el nmero de registros que se han de bloquear. En el caso de archivos de DISKETTE, el sistema determinar siempre
el nmero de registros que se han de bloquear.
2. Si *BLK se especifica con BLOCK CONTAINS y se dan todas las condiciones
siguientes:
a. ACCESS IS SEQUENTIAL o ACCESS IS DYNAMIC estn especificadas
en el archivo.
b. El archivo se abre slo para INPUT o OUTPUT en dicho programa.
c. El archivo se asigna a DISK, DATABASE, DISKETTE o TAPEFILE.
En la organizacin RELATIVE, no se efecta agrupacin para OPEN OUTPUT.
La clusula BLOCK CONTAINS controla el nmero de registros que se han de
bloquear. En el caso de archivos de DISKETTE, el sistema determinar
siempre el nmero de registros que se han de bloquear.
Incluso si se cumplen todas las condiciones anteriores, ciertas restricciones
OS/400 pueden provocar la imposibilidad de procesar bloqueos y desbloqueos. En
estos casos, no se producirn mejoras en el rendimiento.
Si se est utilizando archivos de organizacin accedidos e indexados de forma
dinmica, se puede utilizar READ PRIOR y READ NEXT para realizar agrupaciones. Al utilizar READ PRIOR y READ NEXT para realizar agrupaciones, no
se puede cambiar la direccin mientras an queden registros en la agrupacin.
Para borrar los registros de una agrupacin, especifique una operacin al azar (por

Captulo 7. Gestin de Archivos y Datos

107

ejemplo, READ o START), o utilice una operacin secuencial READ FIRST o


READ LAST.
Si se produce un cambio de direccin ilegal, el resultado ser un estado de archivo
9U. No ser posible ninguna E/S ms hasta que el archivo se cierre y se vuelva a
abrir.
El bloqueo puede alterarse temporalmente en tiempo de ejecucin especificando
SEQONLY(\NO) para el mandato OVRDBF.
Si se utiliza BLOCK CONTAINS en los archivos de base de datos, y si el factor de
bloqueo cero se especifica o se calcula, el sistema determinar el factor de
bloqueo.
Hay algunos casos en los que el factor de bloqueo especificado por el usuario
puede cambiarse. Consulte la publicacin Gua para la Base de Datos para ms
informacin acerca de estas situaciones.
El rea de realimentacin de E/S contendr el nmero de registros en un bloque
en el que se grabe o se lea dicho bloque de registros. El rea I/O-FEEDBACK no
se actualiza despus de cada lectura o grabacin de archivos en la que COBOL
agrupe y desagrupe varios registros. La actualizacin se produce cuando se lee o
se graba el siguiente bloque. Consulte el apartado I/O FEEDBACK en la publicacin COBOL/400 Reference para ms informacin.
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
descripcin del efecto de la agrupacin en los cambios en archivos de base de
datos, consulte el anlisis sobre el proceso slo secuencial en la publicacin Gua
para la Base de Datos.

Estado de Archivos y reas de Realimentacin


Para transferir datos (reas OPEN-FEEDBACK o I-O-FEEDBACK) asociados con
un archivo abierto a un identificador, utilice el formato siguiente:
Instruccin ACCEPT Formato 3 rea de realimentacin

55ACCEPTidentific.FROMnomb-nemotc.5%

FORnomb-arch

Consulte la seccin Instruccin ACCEPT de la publicacin COBOL/400 Reference


para ms informacin acerca de la especificacin de esta instruccin. Consulte la
seccin Formatos de datos de atributos de la publicacin COBOL/400 Reference
para ms informacin acerca de las reas OPEN-FEEDBACK e I-O-FEEDBACK.

108

COBOL/400 Gua del usuario

Consulte, asimismo, la publicacin Gua para la Gestin de Datos para obtener


ms informacin acerca de OPEN-FEEDBACK e I-O-FEEDBACK y del diseo y la
descripcin de las reas de datos contenidas en las reas de realimentacin.
Cuando se especifica la clusula FILE STATUS, el sistema traslada un valor al
tem de datos de clave de estado despus de cada solicitud de entrada/salida que,
explcita o implcitamente, se refiera a dicho archivo. Este valor de dos caracteres
indica el estado de ejecucin de la instruccin. Cuando el compilador genera el
cdigo para bloquear los registros de salida o desbloquear los registros de entrada,
los valores del estado del archivo causados por excepciones del OS/400 slo se
establecen cuando se procesa el bloque. Para ms informacin acerca de la agrupacin de registros, consulte el apartado Desbloqueo de Registros de Entrada y
Bloqueo de Registros de Salida en la pgina 107.
El rea I/O-FEEDBACK no se actualiza despus de cada lectura o grabacin de
archivos en la que el COBOL agrupe y desagrupe varios registros.
Es posible que no vea los cambios de los archivos de base de datos en el
momento en que se producen, si dichos cambios se realizan en programas distintos. Para obtener una descripcin del efecto de la agrupacin en los cambios en
archivos de base de datos, consulte el anlisis sobre el proceso slo secuencial en
la publicacin Gua para la Base de Datos.

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 Divisin de Datos. La descripcin del archivo para el
sistema operativo incluye la informacin acerca del tipo de archivo y de la longitud 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 todava tendr una descripcin 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 descripcin incluye la informacin acerca del tipo de archivo, como por
ejemplo de base de datos o de dispositivo, y una descripcin 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 programa deben definirse en el programa COBOL dentro de las secciones
INPUT-OUTPUT SECTION y FILE SECTION. Las descripciones de registros en la
seccin FILE SECTION para los archivos descritos externamente pueden definirse
con la instruccin COPY de Formato 2.
Las funciones dependientes de dispositivo, como por ejemplo el control de formularios, no las obtiene la operacin COPY de Formato 2. Slo se obtienen las descripciones a nivel de campo.

Captulo 7. Gestin de Archivos y Datos

109

Cuando se especifica EXTERNALLY-DESCRIBED-KEY como RECORD KEY, los


campos que componen RECORD KEY se obtienen tambin en las DDS.
Para ms informacin acerca de la instruccin COPY de Formato 2, consulte la
Figura 37 en la pgina 118 y el texto que la acompaa.
Nota: El proceso real del archivo dentro de la Divisin de Procedimientos es el
mismo, tanto si el archivo est descrito externamente como si est descrito
por programa.

Archivos Descritos por Programa


Los registros y campos para un archivo descrito por programa se describen
mediante la codificacin de descripciones de registro en la Seccin de Archivo del
programa COBOL en lugar de utilizar la instruccin COPY de Formato 2.
El archivo debe existir en el sistema antes de que el programa pueda ejecutarse,
excepto cuando utilice la creacin dinmica de archivos, especificando GENOPT
(*CRTF) en el mandato CRTCBLPGM. Para ms informacin, consulte la descripcin del parmetro GENOPT en la pgina 23 o la instruccin OPEN en la
COBOL/400 Reference. Para crear un archivo, utilice uno de los mandatos Crear
Archivo, que podr encontrar en la publicacin CL Reference.
Las DDS pueden utilizarse junto con los mandatos de Crear Archivo. En un
archivo indexado COBOL, debe crearse una va 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.

Archivos Descritos Externamente


Los archivos descritos externamente ofrecen las siguientes ventajas en comparacin con los archivos descritos por programa:
Menos codificacin en programas COBOL. Si varios programas utilizan el
mismo archivo, los campos pueden definirse una sola vez en el sistema operativo, y luego pueden utilizarlos todos los programas. Esto elimina la necesidad de codificar una descripcin de registro para cada programa que utiliza el
archivo.
Menos actividad de mantenimiento cuando se cambia el formato de registro del
archivo. Podr actualizar con frecuencia los programas cambiando el formato
de registro del archivo y recompilando a continuacin los programas que utilizan el archivo cambiando cualquier codificacin en el programa.
Mejor documentacin. Los programas que utilizan los mismos archivos utilizan
formatos de registro y nombres de campos coherentes.
Cualquier edicin que ha de procesarse en archivos de salida descritos externamente pueden especificarse en las DDS.
La descripcin externa de un archivo incluye:
Las especificaciones del formato de registro que contenga una descripcin de
los campos en un registro
Las especificaciones de va de acceso que describen cmo se recuperan los
registros.

110

COBOL/400 Gua del usuario

Estas especificaciones vienen de la descripcin de archivos externos y del


mandato OS/400 que utilice el usuario para crear el archivo.
Podr utilizar un archivo descrito externamente en un programa convirtindolo en
un archivo descrito por programa (codificando la descripcin del registro en el
fuente). En este caso, el compilador no copia la descripcin externa a nivel de
campo del archivo en tiempo de compilacin. Ello le resultar til durante las conversiones, puesto que un programa ya existente podr utilizar un archivo descrito
por programa a la vez que un programa nuevo utiliza un archivo descrito externamente para referirse al mismo archivo.
La Figura 31 muestra el modo en que los programas COBOL pueden relacionarse
con los archivos del sistema AS/400, utilizando las descripciones externas del
archivo de las DDS.
Sistema OS/4
Sistema OS/4
Sistema OS/4

Descripcin a
Descripcin a
Descripcin a
Nivel de Campo
Nivel Registro
Nivel de campo
de un Archivo
de un Archivo
de un Archivo


6
6
6
6 6
COBOL .1/
COBOL .2/
COBOL .3/
COBOL .4/

Archivo

Archivo

Archivo

Archivo

Descrito

Descrito por
Descrito

Descrito

Externamente
Programa. El
por Programa.
Externamente
mediante

compilador no

mediante

DDS.

copia de la

DDS.

descripcin a

nivel de

campo.

Figura 31. Ejemplo que Muestra Cmo se Relaciona el COBOL con Archivos del AS/400

.1/

El programa COBOL utiliza la descripcin a nivel de campo de un archivo


definido en el sistema operativo. El usuario de COBOL codific una instruccin COPY de Formato 2 para la descripcin de registro. En tiempo de compilacin, el compilador copia de la descripcin externa a nivel de campo y la
convierte en una descripcin de registro COBOL sintcticamente correcta. El
archivo debe existir en tiempo de compilacin.

.2/

Un archivo descrito externamente se utiliza como archivo descrito por programa en el programa COBOL. Toda la descripcin de registro para el
archivo se codifica en el programa COBOL. Este archivo no tiene que existir
en tiempo de compilacin.

.3/

Se describe un archivo en el sistema operativo slo hasta el nivel de registro.


Toda la descripcin de registro debe codificarse en el programa COBOL. Este
archivo no tiene que existir en tiempo de compilacin.

.4/

Puede especificarse un nombre de archivo para tiempo de compilacin, y


puede especificarse un nombre de archivo distinto para tiempo de ejecucin.
Una instruccin COPY de Formato 2 genera la descripcin de registro del
archivo en tiempo de compilacin. En tiempo de ejecucin, puede utilizarse
una lista de bibliotecas distinta o un mandato de alteracin temporal del
archivo de forma que el programa acceda a otro archivo. La descripcin de
archivo copiada en tiempo de compilacin se utiliza para describir los registros de entrada utilizados en tiempo de ejecucin.

Captulo 7. Gestin de Archivos y Datos

111

Nota: Para los archivos descritos externamente, los dos formatos de archivo
deben ser los mismos. De lo contrario, se produce un error de comprobacin de nivel.

Especificaciones de Descripcin de Datos (DDS)


Puede utilizar las Especificaciones de Descripcin de Datos (DDS) para describir
los archivos a nivel de campo en el sistema operativo. En las DDS, cada formato
de registro en un archivo descrito externamente se identifica mediante un nombre
de formato de registro exclusivo.
Las especificaciones del formato de registro describen los campos en un registro y
la ubicacin de los campos en un registro. Los campos se ubican en el registro en
el orden especificado en las DDS. La descripcin de campo generalmente incluye
el nombre de campo, el tipo de campo (carcter, binario, decimal externo o decimal
interno) y la longitud de campo (incluido el nmero de posiciones decimales en un
campo numrico). En lugar de especificarse en el formato de registro para un
archivo fsico o lgico, los atributos de campo pueden definirse en un archivo de
referencia de campo. (Consulte la Figura 32 en la pgina 113).
Las claves para un formato de registro se especifican en las DDS. Cuando utiliza
la instruccin COPY de Formato 2, se genera una tabla de comentarios en el
listado del programa fuente mostrando cmo se definen las claves en las DDS
para el formato.
Adems, las palabras clave de las DDS pueden utilizarse para:
Especificar los cdigos de edicin para un campo (EDTCDE)
Especificar palabras de edicin para un campo (EDTWRD)
Especificar que no se permiten los valores de clave duplicados para el archivo
(UNIQUE)
Especificar una descripcin de texto para un formato de registro o un campo
(TEXT).
Consulte la publicacin DDS Reference para obtener una lista completa de las
palabras clave de las DDS vlidas para un archivo de base de datos.

112

COBOL/400 Gua del usuario

G X 2 1 - 9 8 9 1 - 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
Inter national

B usiness

Machines

*El

Archivo

Signo

nmero

de

hojas

por

rea

de

Impreso
relleno puede

Descripcin

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

10

1 1

1 2

1 3

1 4

1 5

A
A *

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

D S T R E F
R

C AMP O S

2 6

2 7

2 8

2 9

Tipo
3 0

3 1

3 2

T E X T O

3 3

3 4

3 5

(b/O /I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A * * F L D R E F

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

CON S U L

4 0

4 1

T A

P o s

4 2

4 3

D S T R E F

U S U A L M E N T E

B A S D A T

Z A DO S
6

C OMO

U T

Z A DO S

P O R

C U S T

A R C H .

MA E S T R O

N AM E

A D D R

C I

2 0

C L

' C AM P O

5 9

T A

6 0

6 1

6 2

6 3

6 4

6 5

6 6

6 7

D E

C AMP O

D A T O S

6 8

6 9

D I

D I

7 0

7 1

7 2

S T R

S T R

7 3

7 4

7 5

7 6

7 7

7 8

7 9

' N OM B R E

CO L H DG (
T E X T (

I E N T E

I B U C I ON '

B A S E )

'

' N UM E R O '

D E

C L

' D I R E CC I ON

D E

' C I U D A D

E N T E

)
'

C L

I E N T E

'

T E X T (

U S
8

A
R

A
R

'

'

' COD I GO '


N UM

)
C L

I E N T E

'

)
' P O S T A L

'

5 )
' C L

I E N '

I P O

C L

E N T E

5 = O T R

'

CO L H DG (

' C U E N T

E D T CD E (

J )

R E F F L D ( A R B A L

)
E N

'

I MP

R E F F L D ( A R B A L
' U L

' U L

'

'

I P O '

P O R

CO L H DG (

T E X T (

E N T E

B U S Q U E D A

' COD I GO '

4 = P T

CO L H DG (

' B U S Q U E D A '

R A NG E ( 1
CO L H DG (

C L

' P R OV I NC I A '

C H E C K ( M F

D E

' COD I GO

CO L H DG (

1 = GO B

CO B R A R

A / R

'

2 = P L A N

'

' A R C H

'

3 = B +

S A L D O '

P E D I D O S

'

)
'

I MP

I MP OR T E

'

' P AGA DO '


P AGA DO

E N

)
A / R

'

A
A
A
A

Figura 32. Ejemplo de Archivo de Referencia de Campos

Este ejemplo de un archivo de referencia de campos muestra las definiciones de


los campos que utiliza el archivo CUSMSTL (lgico maestro de clientes), que se
muestra en la Figura 33 en la pgina 115. El archivo de referencia de campos
normalmente contiene las definiciones de campos que utilizan otros archivos. El
texto siguiente describe algunas entradas para este archivo de referencia de
campos.
.1/

8 0

I B U C I N

CO L H DG (

CO L H DG (

L S T AM T

5 8

' C L

C H E C K ( M F

OR D B A L

5 7

CO L H DG (

A R B A L

5 6

I C AC I ON E S

E N T E S

S R H COD

C U S T Y P

5 5

E D T CD E ( Y )

C H E C K ( M F

I P

5 4

' CON S U L

CO L H DG (

5 3

T A

5 2

A P L

S T A T E

5 1

R E F F L D ( N OM B R E )

5 0

CO L H DG (
T Y

4 9

D E

R E F F L D ( N OM B R E )

4 8

C H E C K ( M F

4 7

T E X T (
C AMP O S

4 6

CON S U L

4 5

T E X T (
U T

A
A *

4 4

C AMP O

El campo BASDAT se edita mediante el cdigo de edicin Y, tal como se


indica mediante la palabra clave EDTCDE (Y). Si este campo se utiliza en
un archivo de salida descrito externamente para un programa COBOL, el
campo generado por COBOL es compatible con el tipo de datos especificado en las DDS. El campo se edita cuando se escribe el registro. Cuando
el campo se utiliza en un archivo de salida descrito por programa, la compa-

Captulo 7. Gestin de Archivos y Datos

113

tibilidad con los campos DDS en el archivo es responsabilidad del usuario.


Cuando las DDS no se utilizan para crear el archivo, la edicin adecuada
del campo en el programa COBOL tambin es responsabilidad del usuario.
.2/

La entrada CHECK(MF) especifica que el campo es un campo de relleno


obligatorio cuando se introduce desde una estacin de trabajo de pantalla.
El relleno obligatorio implica que todos los caracteres del campo deben
introducirse desde la estacin de trabajo de pantalla.

.3/

Los campos ADDR y CITY comparten los mismos atributos especificados


para el campo NAME, tal y como se indica en la palabra clave REFFLD.

.4/

La palabra clave RANGE, que se especifica para el campo CUSTYP,


asegura que los nicos nmeros vlidos que pueden entrarse en este
campo desde una estacin de trabajo de pantalla van del 1 al 5.

.5/

La palabra clave COLHDG proporciona un encabezamiento de columna para


el campo si se utiliza mediante las Herramientas para el Desarrollo de Aplicaciones (Appl Dev Tools).

.6/

El campo ARBAL se edita mediante el cdigo de edicin J, como se indica


mediante la palabra clave EDTCDE(J).

.7/

Se proporciona una descripcin de texto (palabra clave TEXT) para algunos


campos. La palabra clave TEXT se utiliza a efectos de documentacin y
aparece en varios listados.

Especificaciones COBOL para Archivos Descritos Externamente


Utilizando las DDS
Puede incorporar la descripcin del archivo en el programa codificando la instruccin COPY de Formato 2. La informacin de la descripcin externa se recupera
mediante el compilador COBOL, y se genera la estructura de datos COBOL.
Las pginas siguientes proporcionan ejemplos de la utilizacin de las DDS y el
cdigo COBOL que resultar de la utilizacin de una instruccin COPY de Formato
2. Consulte el apartado Instruccin COPY de Formato 2 (Opcin DD, DDR, DDS
o DDSR) en la pgina 118 para una descripcin detallada de la instruccin COPY
de Formato 2.
La Figura 33 en la pgina 115 muestra las DDS para un archivo lgico y la
Figura 34 en la pgina 116 muestra el cdigo COBOL generado.
La Figura 35 en la pgina 117 describe el mismo archivo pero incluye la
palabra clave ALIAS, y la Figura 36 en la pgina 118 muestra el cdigo
COBOL generado.
El proceso de archivo real dentro de la Divisin de Procedimientos es el mismo
para los archivos descritos por programa y descritos externamente.

114

COBOL/400 Gua del usuario

G X 2 1 - 9 8 9 1 - 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
Inter national

Business

Machines

*El

Archivo

Signo

nm e ro

de

hojas

por

rea

de

Impreso
re lleno

Descripcin

puede

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

1 8

19

2 0

2 1

2 2

2 3

2 4

2 6

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

A R C H I VO

(b/O/I/B/H/M/N/P)
3 6

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P os

4 2

4 3

MA E S T R O

4 4

4 5

4 6

4 7

D E

4 8

4 9

C L

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

I E N T E

U N I Q U E
R

C U S R E C

P F

L E ( C U S M S T P )

T E X T

C U S T

N AM E

A D D R

C I

S T A T E

S R H COD

' R E G I

S T R O

MA E S T R O

C L

I E N T E

C U S T Y P

I P

A R B A L

OR D B A L

L S T AM T

L S T D A T

C R D L M T

T Y

S L S Y R

A
A

2 5

C U S M S T L

A
A *

Referencia (R)

Reservado

Nombre
1 7

L OG I C A L

Tipo Datos/Desp lazamien to Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A * *

Longitud

U t i l i z a c/i n

N om b re

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Co ndicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

S L S L Y R
K

C U S T

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

Figura 33. Ejemplo de las Especificaciones de Descripcin de Datos para un Archivo Lgico

.1/

Se define un archivo lgico para procesar el archivo fsico maestro de


clientes (CUSMSTP) y denominado CUSMSTL.

.2/

La palabra clave UNIQUE indica que no se permiten los valores de clave


duplicados para este archivo.

.3/

Se define un formato de registro (CUSREC) para el archivo CUSMSTL, que


se basa en el archivo fsico CUSMSTP.

.4/

El campo CUST se identifica como campo de clave para este archivo.

.5/

Si no se especifican los atributos de campo (como, por ejemplo, la longitud,


tipo de datos y posiciones decimales) en las DDS para un archivo lgico, los
atributos se obtienen del campo correspondiente en el archivo fsico. Cualquier atributo de campo especificado en las DDS para el archivo lgico
Captulo 7. Gestin de Archivos y Datos

115

8 0

altera temporalmente los atributos para el campo correspondiente en el


archivo fsico. La definicin de los campos en el archivo fsico puede referirse a un archivo de referencia de campo. Un archivo de referencia de
campos es un archivo de descripcin de datos que consta de nombres de
campos y de sus definiciones, como el tamao y el tipo. Cuando se utiliza
un archivo de referencia de campos, los mismos campos utilizados en varios
formatos de registros tienen que definirse slo una vez en el archivo de referencia de campos. Para ms informacin acerca de un archivo de referencia
de campos, consulte la publicacin Gua para la Base de Datos.
La Figura 32 en la pgina 113 muestra un ejemplo de un archivo de referencia de
campos que define los atributos de los campos utilizados en el archivo de base de
datos. Consulte la publicacin Gua para la Base de Datos para obtener ms informacin acerca de los archivos de referencia de campos.
1

CUS-MASTER.
COPY DDS-CUSREC OF CUSLIB-CUSTMAST.
\FORMATO E-S: CUSREC DE ARCHIVO CUSTMAST DE BIBL. CUSLIB
\
REGISTRO MAESTRO CLIENTE
\LAS DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO CUSREC
\NUMERO
NOMBRE RECUPERAC. TIPO
SECALT
\1
CLIENTE ASCENDENTE AN
NO
5
CUSREC.
6 CUST
PIC X(5).
\
NUMERO CLIENTE
6 NAME
PIC X(2).
\
NOMBRE CLIENTE
6 ADDR
PIC X(2).
\
DIRECCION CLIENTE
6 CITY
PIC X(2).
\
CIUDAD CLIENTE
6 STATE
PIC X(2).
\
ABREVIATURA PROVINCIA
6 ZIP
PIC S9(5)
COMP-3.
\
CODIGO POSTAL
6 SHRCOD
PIC X(6).
\
CODIGO BUSQUEDA NOMBRE CLIENTE
6 CUSTYP
PIC 9(1).
\
TIPO CLIENTE
6 ARBAL
PIC S9(6)V9(2)
COMP-3.
\
SALDO CUENTAS PEND.

CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC

Figura 34. Ejemplo de los Resultados de la Instruccin COPY de Formato 2 (DDS)

116

COBOL/400 Gua del usuario

G X 2 1 - 9 8 9 1 - 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
Inter national

B usiness

Machines

*El

Archivo

Signo

nmero

de

hojas

por

rea

de

Impreso
relleno puede

Descripcin

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

A * *

10

1 1

1 2

1 3

1 4

1 5

1 8

1 9

2 0

2 1

2 2

2 3

2 4

A
A *

2 5

C U S M S T L

2 6

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

(b/O /I/B/H/M/N/P)
3 6

A R C H I VO

3 7

Ubicacin

Funciones

U t i l i z a c/i n

Tipo

Datos/Desplazamiento Teclado

Longitud

Referencia (R)

Reservado

Nombre
1 7

L OG I C A L

Nom bre

D ecimales

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 8

Lnea

3 9

4 0

4 1

P o s

4 2

4 3

4 4

MA E S T R O

4 5

4 6

4 7

C L

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 8

6 9

7 0

7 1

7 2

7 3

7 4

7 5

7 6

'

7 7

7 8

7 9

U N I Q U E
R

C U S R E C

P F

L E ( C U S M S T P )

T E X T (

' R E G I

S T R O

MA E S T R O

C U S T

A L

I A S ( N U M E R O _C L

I E N T E )

N AM E

A L

I A S ( N OM B R E

I E N T E )

A D D R

A L

I A S ( D I R E CC I ON )

C I

I A S ( COD I GO _B U S Q U E D A )

_C L

S T A T E

S R H COD

A L

C U S T Y P

A L

I A S (

A R B A L

A L

I A S ( S A L D O _C U E N T A S

OR D B A L

I E N T E

L S T AM T

I P

L S T D A T

C R D L M T

C L

T Y

I P O _C L

E N T E

)
_P O R

CO B R A R )

S L S Y R

A
A

6 7

I E N T E S

S L S L Y R
K

C U S T

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

Figura 35. Ejemplo de las Especificaciones de Descripcin de Datos con ALIAS

.1/

Este es el nombre asociado con la palabra clave ALIAS, que se incluir en


el programa. Disponible en la opcin 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.

Captulo 7. Gestin de Archivos y Datos

117

8 0

CUS-MASTER.
COPY DD-CUSREC OF CUSLIB-CUSTMAST.
\FORMATO E-S: CUSREC DESDE CUSTMAST DE BIBLIOTECA CUSLIB
\
REGISTRO MAESTRO CLIENTE
\LAS DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO CUSREC
\NUMERO
NOMBRE
RECUPERAC. TIPO
SECALT
\1
NUMERO-CLIENTE
ASCENDENTE AN
NO
5
\
\
\
\
\
\
\
\
\

CUSREC.
6 CUSTOMER-NUMBER PIC X(5).
NUMERO CLIENTE
6 CUSTOMER-NAME
PIC X(2).
NOMBRE CLIENTE
6 ADDRESS
PIC X(2).
DIRECCION CLIENTE
6 CITY
PIC X(2).
CIUDAD CLIENTE
6 STATE
PIC X(2).
ABREVIATURA PROVINCIA
6 ZIP
PIC S9(5)
COMP-3.
CODIGO POSTAL
6 SEARCH-CODE
PIC X(6).
CODIGO BUSQUEDA NOMBRE CLIENTE
6 CUSTOMER-TYPE
PIC 9(1)
TIPO CLIENTE
6 ACCT-REC-BALANCE PIC S9(6)V9(2)
COMP-3.
SALDO CUENTAS PEND.

CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC

Figura 36. Ejemplo de los Resultados de la Instruccin COPY de Formato 2 (DD) con la
Palabra Clave ALIAS

Ampliacin de IBM

Instruccin COPY de Formato 2 (Opcin DD, DDR, DDS o DDSR)


Para una informacin general acerca de los formatos de la instruccin COPY, vea
la publicacin COBOL/400 Reference.

55COPYDD-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

5OFnombre-archivo5

IN nombre-biblioteca
SUPPRESS

55%

REPLACING ==pseudotexto -1==BY ==pseudotexto -2==

identificador-1
identificador-2

literal-1
literal-2

palabra-1
palabra-2

Figura 37. Instruccin COPY Formato 2 Conversin DDS

118

COBOL/400 Gua del usuario

Puede utilizar la instruccin COPY de Formato 2 (opcin DD, DDR, DDS o DDSR)
para crear instrucciones de Divisin de Datos COBOL para describir un archivo
existente en el sistema. Estas descripciones se basan en la versin del archivo
existente en tiempo de compilacin. No utilizan ninguna sentencia fuente DDS del
archivo. Consulte la seccin Instruccin COPY de la publicacin COBOL/400
Reference para ms informacin acerca de la instruccin COPY
Nota: El trmino instruccin COPY de Formato 2 indicar la instruccin COPY de
Formato 2 (opcin DD, DDR, DDS o DDSR) a travs de este manual.
La instruccin COPY de Formato 2 slo se utiliza en la Divisin de Datos. Debe
asegurarse que un tem a nivel de grupo que tiene un nmero de nivel menor que
05 precede a la instruccin.
La opcin DD se utiliza para hacer referencia a los nombres ALIAS (alternativos).
La especificacin de un nombre de ALIAS en las DDS permite que un nombre de
datos de hasta 30 caracteres se incluya en el programa COBOL.
Cuando se utiliza la opcin DD, cualquier nombre de ALIAS presente sustituye a
los nombres de campos de las DDS correspondientes. Todos los subrayados en
los nombres ALIAS se convierten en guiones antes de producirse alguna sustitucin.
La opcin DDR hace todo lo que hace la opcin DD. Tambin copia los nombres
de campo de formato DDS internos, sustituyendo los caracteres COBOL no vlidos
(@, #, $ y _) por los caracteres COBOL vlidos A, N, D y - segn proceda. Esta
opcin tambin elimina cualquier subrayado desde el final de los nombres de
campo.
La opcin 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
opcin DDS de la instruccin COPY de Formato 2, consulte las pginas 127 a 133.
La opcin DDSR hace todo lo que hace la opcin DDS. Tambin copia los
nombres de campo de formato DDS internos, sustituyendo los caracteres COBOL
no vlidos (@, #, $, y _) por los caracteres COBOL vlidos A, N, D, y -, segn
proceda. Esta opcin tambin elimina cualquier subrayado desde el final de los
nombres de campo.
El ejemplo siguiente muestra el efecto de la opcin DDR o DDSR en nombres de
campos COBOL no vlidos:
Nombre de campo original
FLD_A

Nombre de campo modificado


FLD-A

NUMBER#1

NUMBERN1

POINT@7

POINTA7

BALANCE$

BALANCED

Cuando la clusula RECORD KEY especifica EXTERNALLY-DESCRIBED-KEY,


slo puede copiarse un formato a la vez bajo una FD. Por ejemplo, si todos los
formatos de un archivo se copian bajo una FD, no puede especificarse otra instruccin COPY de Formato 2 para el mismo archivo bajo dicha FD.

Captulo 7. Gestin de Archivos y Datos

119

El nombre de formato es el nombre de la definicin de formato de registro DDS


que debe convertirse en entradas de descripcin de datos COBOL. El nombre de
formato debe seguir las reglas para la formacin de cualquier nombre COBOL/400.
Si no se se especifica -I ni -O, se asume -I-O.
Si se especifica el nombre de formato sin el atributo Indicador, y los formatos -I y
-O deben generarse, cada formato de registro se genera como una redefinicin de
un tem elemental 05 definido como:
El tamao del formato de registro ms grande que se generar.
Si se especifica ALL-FORMATS (sin el atributo Indicador), cada formato de registro
se genera como una redefinicin de un tem elemental 05 definido como:
El tamao del formato de registro ms grande en el archivo, si aparece la instruccin COPY en la Seccin de Archivos
El tamao del formato de registro ms grande que se generar, si aparece la
instruccin COPY fuera de la Seccin de Archivos.
Cuando se especifica el atributo Indicador, no se produce ninguna redefinicin. En
su lugar, cada formato genera una estructura de datos separada.
Puede encontrarse mas informacin acerca del atributo de Indicador en la seccin
Atributo de Indicador de la Instruccin COPY de Formato 2 en la pgina 124.
El nombre de biblioteca es opcional. Si no se especifica, se utiliza la lista de
bibliotecas de trabajo actual como valor por omisin.
El nombre de archivo es el nombre de un archivo del sistema AS/400. Las
entradas DDS generadas representan el formato de registro definido en el archivo.
El archivo debe crearse antes de que se compile el programa.
Si el archivo es un archivo de base de datos, se genera un nico formato de E-S.
Para el resto de tipos de archivos, la descripcin generada vara de la manera
siguiente:
Si se especifica -I, las entradas de descripcin de datos generadas contienen:
Los campos de entrada y entrada/salida para un formato que no sea de
subarchivo, o
Los campos de entrada, salida, y entrada/salida para un formato de subarchivo.
Si se especifica -O, las entradas de descripcin de datos generadas contienen:
Los campos de salida y entrada/salida para un formato que no sea de subarchivo, o
Los campos de entrada, salida, y entrada/salida para un formato de subarchivo.
Nota: Los registros de subarchivo slo con campos de salida o entrada/salida, sin
indicadores de campo especificados, generan formatos I/O.
Si se necesita un rea de almacenamiento separada en WORKING-STORAGE
para cada formato, debe especificarse una instruccin COPY individual para cada
formato.

120

COBOL/400 Gua del usuario

Por ejemplo, si asume que el archivo CUSTMASTER contiene dos formatos


CUSADR y CUSTDETL, pueden especificarse las instrucciones COPY siguientes:

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 instruccin COPY slo 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 tambin pueden utilizarse para reflejar respuestas particulares. Estos indicadores se conocen como
OPTION y RESPONSE, respectivamente. Los indicadores de opcin proporcionan
opciones tales como espaciado, subrayado y permiso o peticin de transferencia
de datos desde un programa a una impresora o dispositivo de pantalla. Los indicadores de respuesta proporcionan informacin de respuesta a un programa desde
un dispositivo, como por ejemplo las teclas de funcin pulsadas por un usuario de
estacin de trabajo, y si se han introducido los datos.
Pueden utilizarse indicadores con archivos TRANSACTION y FORMATFILE, pero
nunca con archivos de base de datos.

Estructuras de Datos Generadas


Las diferentes palabras clave DDS influyen en la creacin de los diversos tipos de
estructuras de datos.

Captulo 7. Gestin de Archivos y Datos

121

Estructuras de Nivel de Formato (Registro)


Al principio de cada formato, se genera una tabla de comentarios en el listado del
programa fuente. Estos comentarios proporcionan detalles de los archivos utilizados durante la compilacin del programa. Si hay claves de registros para el
archivo, los comentarios tambin se generan para mostrar cmo se definen las
claves en las DDS. A continuacin aparece un listado de las entradas de clave de
registro que aparecen en la tabla y el encabezamiento de la tabla.
Encabezamiento

Posible entrada

NMERO
NOMBRE
RECUPERACION
TIPO

Nmero del campo de clave


Nombre del campo de clave
ASCENDING, DESCENDING
ZONE, DIGIT, SIGNED, ABSVAL,
AN (alfanumrico), N (numrico)
J (tem DBCS), DDS - L (fecha),
DDS - T (hora), DDS - Z (indicacin de la hora),
DDS - G (grfico de longitud variable),
VARLEN (carcter de longitud variable o tem DBCS entre parntesis),
G VARLEN (grfico DBCS de longitud variable)
NO, YES

SECALT

Si se requiere la redefinicin para permitir la generacin de varios formatos, se


genera un nombre a nivel de grupo de la forma siguiente:
05 nombre-archivo-RECORD
PIC X(tamao del mayor registro).
Para cada formato, se asigna un nombre a nivel de grupo de la manera siguiente:
INPUT
05 nombre-formato-I
OUTPUT
05 nombre-formato-O
Formato I/O
05 nombre-formato

Estructuras de Campos de Datos


Los nombres de campo, las definiciones PICTURE y las clusulas de utilizacin
numrica se obtienen directamente de los nombres de campos de formato interno
DDS (o nombres ALIAS en el caso de la opcin DD o DDR) y las representaciones
de tipo de datos. Los nombres de campo y las definiciones PICTURE se construyen de la manera siguiente:
06 nombre-campo PIC
Nota: Consulte la Figura 38 en la pgina 123 para la definicin COBOL
PICTURE adecuada.

122

COBOL/400 Gua del usuario

Tabla 3. Estructura del campo de datos


DDS

Tipo de datos
(pos. 35)

DIVISIN DE DATOS COBOL


n=longitud total de campo (pos. DDS 30-34)
m=nmero de decimales (pos. DDS 36 y 37)
Formatos

Si pos. DDS 36 y 37 estn en


blanco

Si pos. DDS 36 y 37 no estn


en blanco

ARCHIVOS FSICOS, LGICOS, DE IMPRESORA Y DE COMUNICACIONES


(En
blanco)
P
S
B
F

A
H
L
T
Z
J
E
O
G

Por omisin

PIC X(n)

PIC S9(n-m)V9(m)

Decimal empaquetado
Caracteres numricos
decimales/marcados con zona
Binario
Coma flotante
precisin simple
precisin doble
Carcter
Datos hexadecimales
Fecha
Hora
Indicacin horaria
Datos nicamente DBCS
Cualquier tipo de datos DBCS
Datos DBCS abiertos
Datos DBCS grficos

PIC S9(n) COMP-3


PIC S9(n)

PIC S9(n-m)V9(m) COMP-3


PIC S9(n-m)V9(m)

PIC S9(n) COMP-4

PIC S9(n-m)V9(m) COMP-4

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

PIC 9(5) COMP-4


PIC 9(10) COMP-4

9(5) COMP-4
9(10) COMP-4
X(n)
X(n)
X(n)
X(n)
X(n)
X(n)
X(n)
X(n)
X(2n)

ARCHIVOS DE PANTALLA
(En
blanco)
X
N
Y
I
W
A
D
F

M
S
E
J
O
G

Por omisin

PIC X(n)

PIC S9(n-m)V9(m)

Slo alfabtico
Desplazamiento numrico
Slo numrico
Entrada de teclado no habilitada
Katakana
Desplazamiento alfanumrico
Slo dgitos
Coma flotante
precisin simple
precisin doble
Carcter slo numrico
Desplazamiento numrico
marcado
Cualquier tipo de datos DBCS
Slo DBCS
Datos DBCS abiertos
Datos DBCS grficos

PIC
PIC

PIC
PIC
PIC
PIC

PIC
PIC
PIC

PIC

X(n)
X(n)
X(n)
X(n)
X(n)
X(n)

S9(n-m)V9(m)
S9(n-m)V9(m)
S9(n-m)V9(m)

S9(n)

PIC 9(5) COMP-4


PIC 9(10) COMP-4
PIC X(n)

PIC 9(5) COMP-4


PIC 9(10) COMP-4

PIC S9(n-m)V9(m)

PIC
PIC
PIC
PIC

X(n)
X(n)
X(n)
X(2n)

COBOL considera los campos de coma flotante como de RELLENO. Vase "Campos de coma flotante".
En DDS, si el campo tiene un atributo VARLEN, se aaden dos bytes adicionales al comienzo del campo.
tems FILLER por omisin. Vase "Campos de Fecha, Hora y de indicacin horaria".

Figura 38. Estructuras de Campos de Datos

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.
Captulo 7. Gestin de Archivos y Datos

123

donde xx es el nmero de indicador

Por ejemplo:
06

SAMPLE1-I-INDIC.
07 IN01 PIC 1 INDIC
07 IN04 PIC 1 INDIC
07 IN05 PIC 1 INDIC
07 IN07 PIC 1 INDIC
06 FLD1 PIC ... .
06 FLD2 PIC ... .

01.
04.
05.
07.

Atributo de Indicador de la Instruccin COPY de Formato 2


El atributo de indicador especifica si las entradas de descripcin de datos se
generan para los indicadores.
Si se especifica el atributo de Indicador, se generan las entradas de descripcin de
datos para los indicadores, pero no para campos de datos. Una entrada a nivel de
grupo 05 se genera del siguiente modo:
Si la copia (COPY) es para una nica estructura (por ejemplo, COPY
DDS-nombre-formato-INDIC)
05 nombre-formato-I. (o -O, si es pertinente)
Si la copia (COPY) es para varias estructuras
(por ejemplo, COPY DDS-ALL-FORMATS-INDIC)
05 nombre-archivo-RECORD.
Las entradas de descripcin de datos que se generan se determinan segn el atributo de utilizacin (I, O, o I-O) que se especifique o asuma en la instruccin
COPY.
Si se especifica ...I-INDICATOR..., se generan las entradas de descripcin de
datos para los indicadores de entrada (respuesta) para los indicadores utilizados en el rea de registro de entrada.
Si se especifica ...O-INDICATOR..., se generan las entradas de descripcin de
datos para los indicadores de salida (opcin) para los indicadores utilizados en
el rea de registro de salida.
Si se especifica o se asume ...I-O-INDICATOR..., se generan las entradas de
descripcin de datos separadas para indicadores de entrada y salida (respuesta y opcin) de los indicadores utilizados en las reas de registro de
entrada y salida.
Si no se especifica el atributo Indicador, la generacin de entradas de descripcin
de datos para indicadores depender de si el archivo tena la palabra clave
INDARA especificada en las DDS en el momento en que se cre.
Si no se especific INDARA, las entradas de descripcin de datos se generan
tanto para campos de datos como de indicadores.
Si INDARA se especific, las entradas de descripcin de datos se generan
solamente para campos de datos, y no para indicadores.

124

COBOL/400 Gua del usuario

Generacin de Formatos I/O


Cuando todas las descripciones de campo sean idnticas, y haya solicitado
campos INPUT o OUTPUT implcita o explcitamente, slo se genera un conjunto
de descripciones de campo. Este tipo de descripcin se anota con una lnea de
comentario que reza FORMATO I-O: nombre-formato. Ni -I ni -O se aaden al
formato de registro.
Nota: Esto siempre ocurre en los archivos de base de datos porque todas las
descripciones de campos de un archivo de base de datos son idnticas.
Por ejemplo:

1 RCUSREC.
COPY DDS-CUSREC-I OF CUSFILE.
\
FORMATO E-S: CUSREC DESDE ARCHIVO CUSFILE DE BIBL. CUSLIB
\
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
6
AREACD
PIC S9(3)
COMP-3.
6
BOSTAZ
PIC X(1).
6
CNTCT
PIC X(15).
6
CRCHKZ
PIC S9(2).
6
CSTAT
PIC X(1).
6
CUSTNZ
PIC S9(6).
6
DLORD
PIC S9(6).
6
DSCPCZ
PIC S9(2)V9(3)
COMP-3.
6
INDUS
PIC S9(2).
6
NAME1
PIC X(25).
6
NAME2
PIC X(25).
6
NAME3
PIC X(25).
6
NAME4
PIC X(25).
6
PHONE
PIC S9(7)
COMP-3.
6
PRICIZ
PIC S9(2).
6
SHPINZ
PIC X(25).
6
SLSMAZ
PIC X(3).
6
TAXCDZ
PIC S9(2).
6
TERMSZ
PIC S9(2).

CUSREC

CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC
CUSREC

Figura 39. Ejemplo de Copia DDS que Muestra Formatos I/O

Redefinicin de Formatos
Preste especial atencin a la clusula 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 operacin de salida.
Los tems de datos que estn subordinados a los tems de datos especificados en
una instruccin MOVE CORRESPONDING no se corresponden y no se trasladan
cuando contienen una clusula REDEFINES o estn subordinados a un tem
redefinitorio.
Para evitar la reinicializacin, se pueden utilizar varias instrucciones COPY de
Formato 2 que utilicen sufijos -I y -O para crear reas de almacenamiento separadas en la Seccin de Almacenamiento de Trabajo (Working Storage) de cada

Captulo 7. Gestin de Archivos y Datos

125

formato o tipo de formato (entrada o salida). Con estos formatos de registro


pueden utilizarse instrucciones READ INTO y WRITE FROM.
Por ejemplo:

..
.

..
.
..
.

..
.

..
.

126

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" ...

COBOL/400 Gua del usuario

Ejemplos de Generacin de Claves


AS/400 ESPECIFICACIONES DE DESCRIPCION DE DATOS
International Business Machines

10

11

12

13

14

15

16

17

AR CH I VO

18

19

20

21

22

23

24

F I S I CO

25

26

27

28

P F 1

29

30

31

Descripcin

32

33

P AR A

34

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Nom bre
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

A *

Nombre Condicin

Impreso en Espaa

Pgina

de

Tecla

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Com ent. (A/O/*)

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nmero de hojas por rea de relleno puede variar ligeramente.

37

38

Ubicacin

Funciones

Lnea

39

40

41

Pos

42

E J E MP L O S

43

44

45

D E

46

47

48

49

50

51

52

53

54

55

56

G E N E R AC I ON

57

58

59

D E

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

C L AV E S

A *
A

P F R E COR C

A *
A

M T H

A *

DA Y

Y E AR

I T EM

A
A
A

M T H

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

Figura 40. Especificaciones de Descripcin de Datos para un Archivo Fsico

El archivo fsico de la Figura 40 constituye una base para los ejemplos que aparecen a continuacin. Cada ejemplo hace referencia a un archivo lgico (derivado
del archivo fsico) que especifica EXTERNALLY-DESCRIBED-KEY en su clusula
SELECT.

Captulo 7. Gestin de Archivos y Datos

127

80

Ejemplo que Utiliza la Palabra Clave CONCAT


AS/400 ESPECIFICACIONES DE DESCRIPCION DE DATOS
International Business Machines

10

11

12

13

14

15

16

17

A R CH I VO

18

19

20

21

22

23

L OG I C O

24

25

26

27

L F 1

28

29

30

31

Descripcin

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Nom bre
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

A *

Nombre Condicin

Impreso en Espaa

Pgina

de

Tecla

32

P AR A

33

34

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Com ent. (A/O/*)

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nmero de hojas por rea de relleno puede variar ligeramente.

37

38

Ubicacin

Funciones

Lnea

39

40

41

E J E MP L O S

Pos

42

43

44

D E

45

46

47

48

49

50

51

52

53

54

55

CONCA T E N A R

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

C L AV E S

A *
A

R E COR D 1

P F I L E ( P F 1 )

DA T E

CONCA T ( ME S

A *
A

D I A

A O )

A *
A

M T H

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

Figura 41. Especificaciones de Descripcin de Datos que Utilizan la Palabra CONCAT

Para el archivo lgico de la Figura 41, COPY DDS genera claves y nombres de
claves derivados del archivo fsico:

128

COBOL/400 Gua del usuario

78

79

80

FD
1

LF1 LABEL RECORDS ARE STANDARD.


LOG-RECORD.
COPY DDS-ALL-FORMATS OF LF1.
5 LF1-RECORD PIC X(8).
FORMATO E-S:RECORD1
DESDE ARCHIVO LF1

\
DE BIBLIOTECA COPYDDS
\
\DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO RECORD1
\ NUMERO
NOMBRE
RECUPERAC.
TIPO
SECALT
\
1
MTH-DDS
ASCENDENTE
AN
NO
\
NOMBRE DE CLAVE ORIGINADO DEL ARCHIVO FISICO
\
2
DAY-DDS-DDS
ASCENDENTE
AN
NO
\
NOMBRE DE CLAVE ORIGINADO DEL ARCHIVO FISICO
5 RECORD1
REDEFINES LF1-RECORD.
6 DATE-DDS
PIC X(8).
6 FILLER REDEFINES DATE-DDS.
7 MTH-DDS
PIC X(2).
7 DAY-DDS-DDS
PIC X(2).
7 FILLER
PIC X(4).

Figura 42. Ejemplo que Utiliza la Palabra Clave CONCAT

La instruccin COPY aade el sufijo -DDS a los nombres de campos MTH y DATE
porque MTH es una clave que tiene su origen en el archivo fsico, y DATE es una
palabra reservada COBOL. La instruccin COPY aade 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 fsico y una palabra reservada COBOL.
Observe que si mueve la instruccin COPY de la Seccin de Archivos a la Seccin
de Almacenamiento de Trabajo o a la Seccin de Enlace, los campos subordinados a DATE-DDS ya no estn disponibles:

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
\
5 RECORD1
REDEFINES LF1-RECORD.
6 DATE-DDS
PIC X(8).

DE BIBLIOTECA COPYDDS

Figura 43. Ejemplo que Utiliza la Palabra Clave CONCAT-- Seccin de Almacenamiento de
Trabajo

Captulo 7. Gestin de Archivos y Datos

129

Ejemplo que Utiliza la Palabra Clave RENAME


AS/400 ESPECIFICACIONES DE DESCRIPCION DE DATOS
International Business Machines

10

11

12

13

14

15

16

17

AR CH I VO

18

19

20

21

22

23

24

25

L OG I C O

26

27

28

L F 2

29

30

31

Descripcin

32

33

P AR A

34

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Nom bre
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

A *

Nombre Condicin

Impreso en Espaa

Pgina

de

Tecla

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Com ent. (A/O/*)

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nmero de hojas por rea de relleno puede variar ligeramente.

37

38

Ubicacin

Funciones

Lnea

39

40

41

Pos

42

E J E MP L O S

43

44

45

46

47

48

49

50

51

52

53

54

55

R E D E N OM I N A R

56

57

58

59

60

61

62

P A L AB R A

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

C L AV E

A *
A

R E COR D 2

P F I L E ( P F 1 )

MO N T H

R E N AM E ( M E S )

A *
A
A *
A

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

Figura 44. Especificaciones de Descripcin de Datos que Utilizan la Palabra RENAME

Para el archivo lgico descrito en la Figura 44, COPY DDS genera una clave y un
nombre de clave derivados del archivo fsico:

130

COBOL/400 Gua del usuario

80

FD
1

LF2 LABEL RECORDS ARE STANDARD.


LOG-RECORD.
COPY DDS-ALL-FORMATS OF LF2.
5 LF2-RECORD PIC X(2).
FORMATO E-S:RECORD2
DESDE ARCHIVO LF2

\
DE BIBLIOTECA COPYDDS
\
\DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO RECORD2
\ NUMERO
NOMBRE
RECUPERAC.
TIPO
SECALT
\
1
MTH-DDS
ASCENDENTE
AN
NO
\
NOMBRE DE CLAVE ORIGINADO DEL ARCHIVO FISICO
5 RECORD2
REDEFINES LF2-RECORD.
6 MONTH
PIC X(2).
6 MTH-DDS REDEFINES MONTH PIC X(2).

Figura 45. Utilizacin de la Palabra Clave RENAME

La instruccin COPY aade el sufijo -DDS al nombre de campo MTH porque MTH
es una clave que tiene su origen en el archivo fsico.

Captulo 7. Gestin de Archivos y Datos

131

Ejemplo que Utiliza la Palabra Clave SST


AS/400 ES PECIFICACIONES DE DESCRIPCION DE DATOS
International Business Machines

10

11

12

13

14

15

16

17

AR CH I VO

18

19

20

21

22

23

24

25

L OG I C O

26

27

28

L F 3

29

30

31

Descripcin

32

33

P AR A

34

Tipo Datos/Desp lazamien to Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

N om b re
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

A *

Nombre Co ndicin

35

36

37

38

Lnea

39

40

41

Pos

42

E J E MP L O S

R E COR D 3

Y Y

43

44

45

D E

46

47

48

49

50

51

52

53

54

P A L AB R A

55

56

57

58

59

C L AV E

P F I L E ( P F 1 )

S S T ( AO

2 )

A *
A

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 Descripcin de Datos que Utilizan la Palabra Clave SST

132

COBOL/400 Gua del usuario

de

Funciones

A *
A

Pgina

Ubicacin

A *
A

Impreso en Espaa

Tecla

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Coment. (A/O/*)

Secuencia

Tipo de Formula rio

N mero de

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nm e ro de hojas por rea de re lleno puede variar lige ram ente .

60

61

62

63

S S T

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

Para el archivo lgico descrito en la Figura 46 en la pgina 132, COPY DDS


genera las especificaciones siguientes:

FD
1

LF3 LABEL RECORDS ARE STANDARD.


LOG-RECORD.
COPY DDS-ALL-FORMATS OF LF3.
5 LF3-RECORD PIC X(2).
FORMATO E-S:RECORD3
DESDE ARCHIVO LF3

\
DE BIBL. COPYDDS
\
\DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO RECORD3
\ NUMERO
NOMBRE
RECUPERAC.
TIPO
SECALT
\
1
YY
ASCENDENTE
AN
NO
5 RECORD3
REDEFINES LF3-RECORD.
6 YY
PIC X(2).

Figura 47. Utilizacin de la Palabra Clave SST

La instruccin COPY no aade ningn sufijo al nombre de campo YY porque YY


no es una clave que se origine en el archivo fsico ni es una palabra reservada
COBOL.

Notas Adicionales sobre Nombres de Campos y de Formatos


Si el nombre de campo generado es una palabra reservada COBOL el sufijo -DDS
se aade al nombre de campo.
La frase REPLACING no puede utilizarse para cambiar el nombre de un campo de
clave cuando se utiliza EXTERNALLY-DESCRIBED-KEY.

Campos de Coma Flotante


COBOL trata los campos de coma flotante como FILLER. Los campos pueden
contener valores de coma flotante colocados fuera de COBOL. Se genera una
definicin COMP-4 para mantener el alineamiento adecuado en el registro, pero los
datos no estn en formato binario. No debe hacerse ningn intento de utilizar
datos de coma flotante para el proceso en el programa COBOL.
No se permiten campos de clave de coma flotante. En casos en los que existan
algunos formatos con un campo de clave de coma flotante y otros formatos que no
lo tengan, utilice una o ms instrucciones COPY de Formato 2 con nombres de
formato especficos; no utilice la opcin ALL-FORMATS.
Nota: Si no especifica el orden de clasificacin en el programa, puede crear un
registro que contenga campos de coma flotante en el programa COBOL
moviendo LOW-VALUES a la totalidad del registro antes de mover los
valores de los campos que no sean de coma flotante. Esto les dar un
valor cero a los campos de coma flotante en el registro. Tenga en cuenta
que el mtodo anterior slo es recomendable si los campos de coma flotante vlidos con un valor cero son apropiados para su aplicacin particular.

Frase REPLACING en la Instruccin COPY de Formato 2


La frase REPLACING puede utilizarse para sustituir cualquier fuente generada en
COBOL, incluyendo los nmeros de nivel y el nombre de formato. Observe la
excepcin siguiente:
Cuando se especifica RECORD KEY IS EXTERNALLY-DESCRIBED-KEY, la
frase REPLACING no puede cambiar el nombre de un campo que es una
clave.

Captulo 7. Gestin de Archivos y Datos

133

Por ejemplo:

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
15\
16\ COPY DDS S I N OPCIN REPLACING
17\
14 18 COPY DDS-CUSMST OF CUSMSTP.
+1\
FORMATO E-S:CUSMST
DESDE ARCHIVO CUSMSTP DE BIBL. COBNATEX
+2\
REGISTRO MAESTRO CLIENTE
15 +3
5 CUSMST.
16 +4
6 CUST
PIC X(5).
+5\
NMERO CLIENTE
17 +6
6 NAME
PIC X(25).
+7\
NOMBRE CLIENTE
18 +8
6 ADDR
PIC X(2).
+9\
DIRECCIN CLIENTE
19 +1
6 CITY
PIC X(2).
+11\
CIUDAD CLIENTE
2 +12
6 STATE
PIC X(2).
+13\
PROVINCIA
21 +14
6 ZIP
PIC S9(5)
COMP-3.
+15\
CDIGO POSTAL

NOMCOPIA

FECH/CAM
3/25/94
3/25/94
3/25/94
3/25/94

CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

Figura 48. COPY DDS sin la Opcin REPLACING

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
19\
2\ COPY DDS C O N OPCION REPLACING
21\
31 22 COPY DDS-CUSMST OF CUSMSTP
32 23
REPLACING NAME BY ADDR-LINE-1
33 24
ADDR BY ADDR-LINE-2
34 25
CITY BY ADDR-LINE-3.
+1\
FORMATO E-S:CUSMST
DESDE ARCHIVO CUSMSTP DE BIBL. COBNATEX
+2\
REGISTRO MAESTRO CLIENTE
35 +3
5 CUSMST.
36 +4
6 CUST
PIC X(5).
+5\
NMERO CLIENTE
37 +6
6 ADDR-LINE-1
PIC X(25).
+7\
NOMBRE CLIENTE
38 +8
6 ADDR-LINE-2
PIC X(2).
+9\
DIRECCIN CLIENTE
39 +1
6 ADDR-LINE-3
PIC X(2).
+11\
CIUDAD CLIENTE
4 +12
6 STATE
PIC X(2).
+13\
PROVINCIA
41 +14
6 ZIP
PIC S9(5)
COMP-3.
+15\
CDIGO POSTAL

NOMCOPIA

FECH/CAM
3/25/94
3/25/94
3/25/94
3/25/94
3/25/94
3/25/94
3/25/94

CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

Figura 49. COPY DDS con la Opcin REPLACING

Fin de Ampliacin de IBM

Va de Acceso
La descripcin de un archivo descrito externamente contiene la va de acceso que
describe cmo se recuperan los registros del archivo. Los registros pueden recuperarse basndose en una va de acceso en secuencia de llegada (sin clave) o en
una va de acceso en secuencia de claves.

134

COBOL/400 Gua del usuario

La va de acceso del orden de llegada se basa en el orden en que se almacenan


los registros en el archivo. Los registros slo se aaden al final del archivo.
Para la va de acceso de secuencia por claves, el orden de recuperacin de los
registros del archivo se basa en el contenido de los campos de clave definidos en
las DDS del archivo. Por ejemplo, en las DDS mostradas en la Figura 33 en la
pgina 115, CUST se define como campo clave. La va de acceso en secuencia
de claves se actualiza siempre que se aaden o se suprimen registros, o cuando
se cambia el contenido de un campo clave.
Consulte la publicacin Gua para la Base de Datos para una descripcin completa
de las vas de acceso para un archivo de base de datos descrito externamente.

Claves de Registro y Claves Comunes


Para una va de acceso en secuencia de claves, pueden definirse uno o ms
campos en las DDS para utilizarlos como campos clave para un formato de
registro. No todos los tipos de registro de un archivo necesitan los mismos
campos clave. Por ejemplo, un registro de cabecera de pedido puede tener el
campo ORDER definido como campo de clave, y los registros de detalle de pedido
pueden tener los campos ORDER y LINE definidos como campos de clave.
La clave para un archivo se determina mediante las claves vlidas 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 nmero de campos
de clave definidos en las DDS que sean idnticos 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 comn para
todos los tipos de registro.
Si no hay ningn campo clave comn para todos los tipos de registro, cualquier 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 identificar el registro que desee procesar. COBOL compara el valor de clave con el
valor del archivo o registro y procesa la operacin especificada en el registro cuya
clave coincida con el valor RECORD KEY.
Cuando se especifica RECORD KEY IS EXTERNALLY-DESCRIBED-KEY:

Captulo 7. Gestin de Archivos y Datos

135

Si se especifica la frase FORMAT, el compilador construye el argumento de


bsqueda a partir de los campos de clave en el rea de registro para el
formato especificado.
Si no se especifica la frase FORMAT, el compilador construye el argumento de
bsqueda a partir de los campos de clave en el rea de registro del primer
formato de registro definido en el programa para ese archivo.
Nota: Para un archivo que contiene mltiples campos de clave para procesarlos
en COBOL, los campos de clave deben ser contiguos en el formato de
registro que utilice el programa COBOL, excepto cuando se especifique
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY.

Alterar Temporalmente o Aadir Funciones COBOL a la


Descripcin Externa
Adems de colocar la descripcin externa de archivo en el programa mediante la
instruccin COPY de Formato 2, podr utilizar tambin la definicin y redefinicin
de registro estndar para describir archivos externos o para proporcionar una definicin de grupo para una serie de campos. Es responsabilidad del programador el
asegurar que las definiciones descritas por programa sean compatibles con las
definiciones externas del archivo.

Comprobacin de Nivel
Cuando un programa COBOL/400 utiliza un archivo descrito externamente, el
sistema operativo proporciona una funcin de comprobacin de nivel (LVLCHK).
Esta funcin asegura que el formato no se ha modificado desde el momento de la
compilacin.
El compilador siempre proporciona la informacin requerida por la comprobacin
de nivel cuando se utiliza un archivo descrito externamente (es decir, cuando una
descripcin de registro del archivo se ha definido utilizando la instruccin COPY de
Formato 2). Slo se comprueba el nivel de aquellos formatos que ha copiado la
instruccin COPY de Formato 2 bajo el FD para un archivo. La funcin de comprobacin de nivel se iniciar en tiempo de ejecucin basndose en la seleccin
realizada en los mandatos de crear, cambiar o alterar temporalmente archivo. La
opcin por omisin en el mandato de crear archivo es pedir la comprobacin de
nivel. Si se solicit la comprobacin de nivel, se produce segn el formato de
registro cuando se abre el archivo. Si se produce un error en la comprobacin de
nivel, COBOL establece el estado de archivo a 39 en tiempo de OPEN.
Si no se ha solicitado comprobacin de nivel, y el archivo se vuelve a crear utilizando un formato existente, puede que los programas COBOL que utilicen dicho
formato no trabajen sin recompilacin, dependiendo de los cambios en el formato.
Por ejemplo,
Un cambio de claves provocar, con toda certeza, una anomala en el programa o en cualquier instruccin I/O
Un cambio en la longitud de registro provocar una anomala de cualquier
REWRITE
Un cambio en el diseo de registro puede provocar diversos errores en el
proceso de dicho registro.
Deber extremar las precauciones cuando utilice programas COBOL sin comprobacin de nivel o sin recompilar los programas.

136

COBOL/400 Gua del usuario

Nota: El compilador no proporciona la comprobacin de nivel para los archivos


descritos por programa.
Para obtener ms informacin acerca de la comprobacin de nivel, consulte la
publicacin Gua para la Gestin de Datos.

Declaracin de tems de Datos utilizando Tipos de Datos de CVTOPT


El compilador COBOL/400 sirve para convertir campos de longitud variable desde
archivos descritos externamente, as como tipos de datos de bases de datos SAA
en tems estndar de datos COBOL. Los tipos de datos SAA que se pueden convertir son datos de fecha, hora, indicacin horaria y DBCS grficos. COBOL/400
proporciona soporte limitado para estos tipos de datos.

Campos de Longitud Variable


Es posible trasladar un campo de longitud variable a un programa si se especifica
*VARCHAR en el parmetro CVTOPT del mandato CRTCBLPGM, o bien la opcin
VARCHAR de la instruccin PROCESS. Cuando se especifica *VARCHAR, el programa COBOL/400 convertir un campo de longitud variable desde un archivo descrito externamente en un tem de grupo COBOL/400.
A continuacin se muestra un ejemplo de este tem de grupo:
6

ITEM1.
49 ITEM1-LENGTH
49 ITEM1-DATA

PIC S9(4) COMP-4.


PIC X(n).

donde n representa la longitud mxima del campo de longitud variable. Dentro del
programa, PIC S9(4) COMP-4 se considera como cualquier otra declaracin de este
tipo, y PIC X(n) como un estndar alfanumrico.
Puesto que el valor mximo que ITEM1-LENGTH puede mantener es 9 999, sta
ser la longitud del campo de longitud variable ms largo que se pueda escribir
desde un programa COBOL.
Cuando no se especifica *VARCHAR, se hace caso omiso de los campos de longitud variable y se declaran como campos FILLER en programas COBOL/400. Si
se especifica *NOVARCHAR, el tem se declara como sigue:
6

FILLER

PIC x(n+2).

Para obtener ms informacin referente a la sintaxis, consulte el parmetro


CVTOPT en la pgina 24.
El programa puede realizar cualquier tipo de operaciones de carcter vlido en la
parte de datos generada; no obstante, debido a la estructura del campo, la longitud
de la parte debe estar formada por datos binarios vlidos. Estos datos no son
vlidos si son negativos o mayores que la longitud mxima de campo.
Si los dos primeros bytes del campo carecen de un nmero binario vlido, se producir un error si se intenta efectuar WRITE o REWRITE a un registro que contenga el campo (o UPDATE o PUT el campo en una base de datos), y se devuelve
el estado de archivo 90.
Las siguientes condiciones tienen lugar si se especifican campos de longitud
variable:
Captulo 7. Gestin de Archivos y Datos

137

Si se detecta un campo de longitud variable cuando se extrae un campo para


un archivo descrito externamente o para una estructura de datos descritos
externamente, dicho campo se declarar como un campo de caracteres de longitud fija en un programa COBOL/400.
Para los campos de caracteres de un solo byte, la longitud del campo
COBOL/400 declarado equivale a la longitud del campo DDS ms dos bytes.
Para campos de caracteres DBCS grficos, la longitud del campo COBOL/400
declarado equivale al doble de la longitud del campo DDS ms dos bytes.
Para obtener ms informacin sobre tipos de datos grficos, consulte el apartado Campos Grficos DBCS en la pgina 139. Los dos bytes extra del
campo COBOL/400 contienen un nmero binario que representa la longitud
actual del campo de longitud variable. La Figura 50 muestra la longitud de
campo COBOL/400 de los campos de longitud variable.

5 long. datos-caract.
5

BIN(2)
CHAR(N)
&
longitud declarada en DDS
Para campos de caract. de solo byte:

Para campos tipos datos DBCS grfi.:

+ 2(N)

long. de campo COBOL/4


= long. de campo COBOL/4

Figura 50. Longitud de Campo COBOL/400 de un Campo de Longitud Variable

El programa COBOL/400 puede realizar cualquier operacin vlida de clculo


de caracteres en el campo de longitud fija declarado. Sin embargo, debido a
la estructura del campo, los primeros dos caracteres del campo deben contener datos binarios vlidos (datos de longitud fija actuales no vlidos son no
numricos, inferiores a 0 o mayores que la longitud de campo DDS.) Se
produce un error en una operacin de entrada o salida si los dos primeros
bytes del campo contienen datos de longitud de campo no vlidos; entonces se
devuelve el estado de archivo 90.
Si no se especifica *VARCHAR, se pueden producir errores durante la realizacin de las operaciones WRITE en campos de longitud variable, ya que no
se puede asignar ningn valor a FILLER. El campo de dos bytes puede tener
un valor (por ejemplo X'44') que proporciona una longitud que sobrepase el
rango permitido de este campo. Esta accin origina un error de E/S.
Si desea observar un ejemplo de un programa que utilice campos de longitud
variable, consulte el apartado Ejemplos en la pgina 141.

Campos de fecha, hora e indicacin horaria


Los campos de fecha, hora e indicacin de la hora se introducen en el programa
nicamente si se especifica la opcin *DATETIME del parmetro CRTCBLPGM
CVTOPT, o bien la opcin DATETIME de la instruccin PROCESS. Para obtener
ms informacin sobre la sintaxis del parmetro CVTOPT, consulte la pgina 24.

138

COBOL/400 Gua del usuario

Si no se especifica *DATETIME, se hace caso omiso de los campos de fecha, hora


e indicacin de la hora y se declaran campos FILLER en el programa COBOL/400.
Los campos de fecha, hora e indicacin de la hora se introducen en el programa
COBOL/400 como campos de caracteres de longitud variable. El programa
COBOL/400 puede realizar cualquier operacin vlida en los campos de longitud
variable. Esta operaciones se basan en las reglas COBOL estndar para tems de
datos alfanumricos.
Los tipos de datos de fecha, hora e indicacin de la hora disponen cada uno de
ellos de un formato propio.
Si se actualiza un campo que contiene informacin referente a la hora, fecha o a la
indicacin horaria, y la informacin actualizada debe transferirse a la base de
datos, el formato del campo debe ser exactamente el mismo que el del campo que
fue recuperado desde la base de datos. Si no se utiliza el mismo formato, se producir un error. Para obtener ms informacin referente formatos vlidos para
cada tipo de datos, consulte el manual DDS Reference.
Si se intenta efectuar WRITE sobre un registro antes de trasladar el valor adecuado a un campo de fecha, hora o indicacin de la hora, la operacin WRITE no
ser satisfactoria y se devolver el estado de archivo 90.
Si se declaran en el programa como FILLER los tems fecha, hora e indicacin de
la hora, no intente efectuar WRITE sobre registros que contengan estos campos,
puesto que no es posible establecer valores que puedan ser aceptados por el
sistema.

Campos con posibilidad de nulos


Aunque el programa puede procesar campos con posibilidad de nulos, los valores
nulos no estn soportados. Las operaciones READ, SORT y MERGE pueden realizarse en campos con posibilidad de nulos, pero se producir un error si estos
campos contienen realmente valores nulos.

Campos Grficos DBCS


El tipo de datos DBCS grficos es una serie de caracteres donde cada carcter
est representado por 2 bytes. Este tipo de datos no contienen caracteres de desplazamiento a teclado ideogrfico (SO) ni caracteres de desplazamiento a teclado
estndar (SI). La diferencia entre un dato de un solo byte y los datos DBCS grficos se muestra en la siguiente figura:

Captulo 7. Gestin de Archivos y Datos

139


1 byte 1 byte 1 byte 1 byte

Datos de un
solo byte

1 carc. 1 carc. 1 carc. 1 carc.

1 byte 1 byte 1 byte 1 byte

Datos DBCS
grficos

1 carcter
1 carcter
Figura 51. Comparacin de Datos de un Solo Byte y Datos Grficos

Los datos DBCS grficos se introducen en el programa COBOL/400 solamente si


se especifica el valor *GRAPHIC en el parmetro CVTOPT del mandato
CRTCBLPGM, o bien la opcin CVTGRAPHIC de la instruccin PROCESS. Si no
se especifican datos grficos DBCS, se hace caso omiso de los datos grficos y se
declaran campos FILLER en el programa COBOL/400. Para obtener ms informacin sobre la sintaxis del parmetro CVTOPT, consulte la pgina 24.
Las siguientes condiciones se aplican cuando se especifican los datos DBCS
grficos:
Los datos DBCS grficos se copian en el programa COBOL/400 como un
campo alfanumrico de longitud fija.
Cada carcter de datos DBCS grficos tiene una longitud de 2 bytes.
Cada campo de datos DBCS grficos de longitud fija tiene una longitud que es
el doble del nmero de caracteres del campo. Para obtener una descripcin
de la longitud de campo de los campos de datos grficos de longitud variable,
consulte el apartado Campos de Longitud Variable en la pgina 137.
El programa COBOL/400 puede realizar cualquier operacin vlida en los
campos de longitud variable.

Campos Grficos DBCS de Longitud Variable


Es posible utilizar campos de longitud variable en combinacin con tipos de datos
DBCS grficos para especificar datos DBCS grficos de longitud variable. Para
especificar datos DBCS grficos de longitud variable, especifique \VARCHAR y
\GRAPHIC para el parmetro CVTOPT del mandato CRTCBLPGM, o bien las
opciones VARCHAR y CVTGRAPHIC para la instruccin PROCESS.
Si especifica tanto CVTOPT(\NOVARCHAR \NOGRAPHIC) como CVTOPT(\NOVARCHAR
\GRAPHIC) y el compilador detecta un tem de datos DBCS grficos de longitud
variable, el programa resultante contendr los siguientes elementos:
\

6 FILLER
PIC X(2n+2).
(Campo de longitud variable)

donde n es el nmero de caracteres del campo DDS.

140

COBOL/400 Gua del usuario

Si se especifica CVTOPT(\VARCHAR \NOGRAPHIC) y el compilador detecta un tem de


datos DBCS grficos de longitud variable, el programa resultante contendr los
siguientes elementos:
\
\
\

6 NAME
(Campo de longitud variable)
49 NAME-LENGTH
PIC S9(4) COMP-4.
(Nmero de caracteres de 2 bytes)
49 FILLER
PIC X(2n).
(Campo grfico)

donde n es el nmero de caracteres del campo DDS.


Si se especifica CVTOPT(\VARCHAR \GRAPHIC) y el compilador detecta un tem de
datos DBCS grficos de longitud variable, el programa resultante contendr los
siguientes elementos:
\
\
\

6 NAME
(Campo de longitud variable)
49 NAME-LENGTH
PIC S9(4) COMP-4.
(Nmero de caracteres de 2 bytes)
49 NAME-DATA
PIC X(2n).
(Campo grfico)

donde n es el nmero de caracteres del campo DDS.

Ejemplos
La Figura 52 muestra un ejemplo de archivo DDS que define un tem de datos
DBCS grficos de longitud variable. La Figura 53 en la pgina 142 muestra un
programa COBOL/400 que utiliza una instruccin DDS COPY, as como el listado
resultante que se obtiene cuando se compila el programa.
A
A\
A
A\
A
A
A
A\
A
A

R SAMPLEFILE
VARITEM
TIMEITEM
DATEITEM
TIMESTAMP
GRAPHITEM
VGRAPHITEM

VARLEN
T
L
Z

1G
1G

TIMFMT(\HMS)
DATFMT(\YMD)

VARLEN

Figura 52. Archivo DDS que Define un Campo de Datos Grficos de Longitud Variable

Captulo 7. Gestin de Archivos y Datos

141

5763CB1 V3RM5 1
IBM SAA COBOL/4 TESTER/PGM1
AS4SYS 4/24/94 8:55:54
Pgina
1
Programa . . . . . . . . . . . . . . :
PGM1
Biblioteca . . . . . . . . . . . . :
TESTER
Archivo fuente . . . . . . . . . . . :
QLBLSRC
Biblioteca . . . . . . . . . . . . :
TESTER
Miembro fuente . . . . . . . . . . . :
PGM1
4/24/94 8:23:6
Nivel de gravedad de generacin . . :
29
Texto 'descripcin' . . . . . . . . :
Ejemplos de tipos de datos
Opciones de listado fuente . . . . . :
\NONE
Opciones de generacin . . . . . . . :
\NONE
Opciones de conversin . . . . . . . :
\VARCHAR \DATETIME \GRAPHIC
Lmite de mensaje:
Cantidad de mensajes.. . . . . . . :
\NOMAX
Gravedad lmite de mensaje
. . . :
29
Imprimir archivo. . . . . . . . . . :
QSYSPRT
Biblioteca . . . . . . . . . . . . :
\LIBL
Sealizacin FIPS. . . . . . . . . . :
\NOFIPS \NOSEG \NODEB \NOOBSOLETE
Sealizacin SAA . . . . . . . . . . :
\NOFLAG
Opciones de visualizacin ampliada . :
Gravedad de sealizacin . . . . . . :

Sustituir programa . . . . . . . . . :
\YES
Release de destino . . . . . . . . . :
\CURRENT
Perfil de usuario. . . . . . . . . . :
\USER
Autorizacin . . . . . . . . . . . . :
\LIBCRTAUT
Compilador . . . . . . . . . . . . . :
IBM SAA COBOL/4
5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/PGM1
AS4SYS 4/24/94 8:55:54
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
FECH/CAM
1 1 Identification division.
1/2/94
2 2
Program-id. pgm1.
2/13/94
3 3 Environment division.
1/2/94
4 4 Configuration section.
1/2/94
5 5
Source-computer. ibm-as4.
1/2/94
6 6
Object-computer. ibm-as4.
1/2/94
7 7 Input-output section.
1/2/94
8 8
File-control.
1/2/94
9 9
Select file1
4/23/94
1 1
assign to database-samplefile
2/13/94
11 11
organization is sequential
4/23/94
12 12
access is sequential
4/23/94
13 13
file status is fs1.
4/23/94
14 14 Data division.
1/2/94
15 15 File section.
1/2/94
16 16 fd file1.
1/2/94
17 17 1 record1.
1/2/94
18 18 copy dds-all-formats of samplefile.
2/13/94
19 +1
5 SAMPLEFILE-RECORD PIC X(546).
<-ALL-FMTS
+2\
FORMATO E-S:SAMPLEFILE
DESDE ARCHIVO SAMPLEFILE DE BIBLO TESTER
<-ALL-FMTS
+3\
<-ALL-FMTS
2 +4
5 SAMPLEFILE
REDEFINES SAMPLEFILE-RECORD.
<-ALL-FMTS
21 +5
6 VARITEM.
<-ALL-FMTS
+6\
(Campo de longitud variable)
<-ALL-FMTS
22 +7
49 VARITEM-LENGTH
PIC S9(4) COMP-4.
<-ALL-FMTS
23 +8
49 VARITEM-DATA
PIC X(1).
<-ALL-FMTS
24 +9
6 TIMEITEM
PIC X(8).
<-ALL-FMTS
+1\
(Campo de hora)
<-ALL-FMTS
25 +11
6 DATEITEM
PIC X(8).
<-ALL-FMTS
+12\
(Campo de fecha)
<-ALL-FMTS
26 +13
6 TIMESTAMP
PIC X(26).
<-ALL-FMTS
+14\
(Campo de indicacin de la hora)
<-ALL-FMTS
27 +15
6 GRAPHITEM
PIC X(2).
<-ALL-FMTS
+16\
(Campo grfico)
<-ALL-FMTS
28 +17
6 VGRAPHITEM.
<-ALL-FMTS
+18\
(Campo de longitud variable)
<-ALL-FMTS
29 +19
49 VGRAPHITEM-LENGTH PIC S9(4) COMP-4.
<-ALL-FMTS
+2\
(Nmero de caracteres de 2 bytes)
<-ALL-FMTS
3 +21
49 VGRAPHITEM-DATA
PIC X(2).
<-ALL-FMTS
+22\
(Campo grfico)
<-ALL-FMTS
31 19 working-storage section.
4/22/94
32 2 77 fs1
pic x(2).
4/23/94
33 21 Procedure division.
1/9/94
22 Mainline.
1/2/94
34 23
stop run.
1/2/94
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5738CB1 V2R2M 1
Mensajes COBOL AS/4
TESTER/PGM1
AS4SYS 4/24/94 8:55:54
INST
\
16 MSGID: LBL65 GRAVEDAD: NUMSEC: 16
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'FILE-1' se
se realizar por medio del cdigo generado por el compilador.
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
1
1

Registros fuente ledos . . . . . . :


23
Registros de copia ledos . . . . . :
22
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad emitido ms alto:

LBL91 Programa PGM1 creado en biblioteca TESTER.


\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

Pgina

Pgina

Figura 53. Programa COBOL/400 que utiliza tems de Datos DBCS Grficos de Longitud Variable

142

COBOL/400 Gua del usuario

Consideraciones acerca de los Datos de Sistemas Cruzados


Los identificadores de juegos de caracteres codificados (CCSID) le ayudarn a
mantener la integridad de los datos de caracteres en los sistemas.
La Arquitectura de Representacin de Datos de Caracteres (CDRA) define los
valores CCSID para identificar los puntos de cdigo utilizados para representar
caracteres y para convertir dichos cdigos de manera que conserven sus significados.
Como consecuencia de la conversin CDRA, es posible que pueda tener caracteres de sustitucin (X3F) en sus datos. Si escribe dichos caracteres en una pantalla, se producirn una serie de resultados imprevisibles.
Para obtener ms informacin acerca de las CCSID y CDRA, consulte las publicaciones Operacin del Sistema, SC10-9280 (SC41-3203) y Gua para la Gestin
de Datos.

Captulo 7. Gestin de Archivos y Datos

143

144

COBOL/400 Gua del usuario

Captulo 8. Archivos Transaction


Ampliacin de IBM
Esta captulo describe las ampliaciones del lenguaje COBOL/400 que dan soporte
a las estaciones de trabajo y las comunicaciones programa a programa.
La organizacin de archivos TRANSACTION permite que un programa COBOL
comunique interactivamente con:
Uno o ms usuarios en una estacin de trabajo
Uno o ms programas en un sistema remoto
Uno o ms dispositivos en un sistema remoto.
El sistema AS/400 le permite comunicar con un programa o dispositivo (como, por
ejemplo, tipos de comunicaciones Asncronas) en un sistema remoto. Para una
descripcin detallada de tales dispositivos, consulte la publicacin ICF
Programmers Guide.

Archivos Transaction Descritos por Programa


En general, los archivos TRANSACTION en COBOL se describen externamente.
Sin embargo, si estos archivos se describen por programa, slo pueden realizarse
formatos simples de pantalla. Todas las descripciones a nivel de campo se
definen en el programa COBOL
No enve datos internos (empaquetados) o binarios (COMP, COMP-3 o COMP-4) a
una estacin de pantalla como datos de salida. Tales datos pueden contener
caracteres de control de estacin de pantalla que pueden provocar resultados
imprevisibles.
Consulte la publicacin Gua para la Gestin de Datos para ms informacin
acerca de la utilizacin de la definicin de mandato.

Archivos Transaction Descritos Externamente


Un archivo en COBOL utiliza un archivo descrito externamente que contiene informacin de archivo y una descripcin de los campos en los registros. Los registros
en este archivo pueden describirse en el programa COBOL mediante el Formato 2
de la instruccin COPY.

La instruccin COPY con el Formato 2


Las instrucciones COPY con Formato 2 se utilizan para generar instrucciones en la
Divisin de Datos COBOL dentro de los programas fuente para describir archivos
que existen en el sistema.
Nota: El trmino Instruccin COPY con formato 2 se utiliza en este manual para
describir la instruccin COPY (opcin DD, DDR, DDS o DDSR).
Para ms informacin acerca de la instruccin COPY con Formato 2, consulte el
apartado Instruccin COPY de Formato 2 (Opcin DD, DDR, DDS o DDSR) en la
pgina 118.
Copyright IBM Corp. 1994

145

Especificaciones de Descripcin de Datos (Data Description


Specifications)
Las Especificaciones de Descripcin de Datos (DDS) son una descripcin de la
base de datos del usuario o de los archivos de dispositivo que se entran en el
sistema de forma fija. La descripcin se utiliza para crear archivos.
Adems de las descripciones de campo (como, por ejemplo, los nombres y atributos de los campos), las especificaciones de descripcin de datos (DDS) para un
archivo de dispositivo de pantalla:
Especifican las entradas de nmero de lnea y nmero de posicin para cada
campo y constante con el fin de dar formato a la colocacin del registro en la
pantalla.
Especifican las funciones de atencin, como pueden ser las de campos de
subrayado y resaltado, contraste invertido o un cursor parpadeante.
Especifican la comprobacin de validez para los datos entrados en la estacin
de trabajo de pantalla. Las funciones para la comprobacin 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 especfico
Comprobar los datos para una entrada vlida
Realizar la verificacin de comprobacin de dgitos de los mdulos 10 u
11.

Controlan las funciones de gestin 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 funcin designadas como de
tipo CA o CF. Si una tecla de funcin se disea como CF, tanto el registro de
datos modificados como el indicador de respuesta se devuelven al programa.
Si una tecla de funcin se designa como CA, el indicador de respuesta se
devuelve al programa, pero el registro de datos contiene, generalmente,
valores por omisin para campos slo de entrada y valores grabados en el
formato para campos de entrada/salida ocultos. Para ms informacin acerca
de los tipos de teclas de funcin CF y CA, consulte la publicacin DDS
Reference.
Asignan un cdigo de edicin (palabra clave EDTCDE) o palabra de edicin
(palabra clave EDTWRD) a un campo para especificar cmo deben
visualizarse los valores del campo.
Especifican subarchivos.
Los Datos de formato de pantalla definen o describen una pantalla. Un formato
de registro de dispositivo de pantalla contiene tres tipos de campos:
Campos de Entrada: Los campos de entrada pasan desde un dispositivo al
programa cuando ste lee un registro. Los campos de entrada pueden
inicializarse con un valor por omisin; si no se cambia el valor por omisin,
ste pasa al programa. Los campos de entrada sin inicializar se visualizan
como espacios en blanco en los que el usuario de estacin de trabajo puede
introducir datos.

146

COBOL/400 Gua del usuario

Campos de Salida: Los campos de salida pasan desde el programa al dispositivo cuando aqul graba un registro a una pantalla. El programa o el formato
de registro del archivo de dispositivo puede proporcionar campos de salida.
Campos de Entrada/Salida: Un campo de entrada/salida es un campo de
salida que puede cambiarse y convertirse en campo de entrada. Los campos
de entrada/salida pasan desde el programa cuando el programa graba un
registro a una pantalla y pasan al programa cuando ste lee un registro de una
pantalla. Los campos de entrada/salida se utilizan cuando el usuario va a
cambiar o actualizar los datos que se graban a la pantalla desde el programa.
Para una descripcin detallada de un archivo de comunicaciones de datos, consulte la publicacin ICF Programmers Guide. Para ms informacin acerca de los
archivos de pantalla descritos externamente, vea la publicacin Gua para la
Gestin de Datos. Para una lista de las palabras clave de las especificaciones de
descripciones de datos vlidos (DDS), vea la publicacin DDS Reference.
La Figura 54 muestra un ejemplo de las DDS para un archivo de dispositivo de
pantalla:

Captulo 8. Archivos Transaccin

147

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nmero

Signo

Archivo

de hojas por rea

Impreso

de

re lleno

Descripcin

U M / 0 5 0 *
en

Espaa

puede variar ligeramente.

Pgina

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

D E

2 6

2 7

2 8

2 9

Tipo
3 0

3 1

3 2

3 3

3 4

3 5

CON S U L T A S

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

MA E S T R O

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A * A R C H I VO

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

D E

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

C L

P os

4 2

4 3

4 4

4 5

4 6

4 7

I E N T E

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

C U S M I NQ

A *
A

R E F ( C U S M S T P )

C U S P M T

T E X T (

'

S O L

C A 0 3 ( 1 5

'

' CON S U L T A

' N UM E R O

2 /0

A
A

C U S T

9 9

E R R M S G (

ADO

A
5

' U T

I L

C U S F L D S

I E N T E

3
1 1

AD D R

1 1

1 /
0

C I

1 /
0

1 1

A
A
A
A

T Y

A
A

1 1

1 1

2 1

1 1

3 1

1 2

1 2

1 7

I P

A
A

1 1

A
A

1 1
S T A T E

A R B A L

V A L
F

R E C U B R

N UM E R O

P A R A

C L

C A 0 3 ( 1 5

'

I E N T E S

I N

NO

'

E NCON T R +

CON T

I DO '

I N A L

T E X T O
'

C L

I E N T E

P A R A

C L

R E S T A U R A R ,

P A N T A L L A .

I E N T E

'

P A R A

N AM E

D E

I E N T E

F 3

T A R

C L

P R OG R A M A )

I N T R O

C I

C L

' N UM E R O

I C E

D E

D E

MA E S T R A

D E

P U L S E

P U L S E

T U D

I N

I N T R OD U Z C A

I C I
F

Z A R

I N U AC I ON +

9 9 )
P R OG R A M A , +

VO L V E R

S O L

( P A N T A L L A
D E

D E

P R OG R A M A '

I M I E N T O

' N OM B R E

'

' D I R E CC I ON '

' C I U D AD '

' P R OV I NC I A '

' COD I GO

' B A L A NC E

P O S T A L

A / R

'

'

A
A

Figura 54. Ejemplo de las Especificaciones de Descripcin de Datos para un Archivo de Dispositivo de Pantalla

Esta archivo de dispositivo de pantalla contiene dos formatos de registro: CUSPMT


y CUSFLDS.

148

.1/

Los atributos para los campos de este archivo se definen en el archivo de


referencia de campo CUSMSTP. Por ejemplo, EDTCDE(J) se define en
CUSMSTP para el campo ARBAL.

.2/

La tecla F3 se asocia con el indicador 15, con el que el usuario finaliza el


programa.

.3/

La palabra clave ERRMSG identifica el mensaje de error que se visualiza si


el indicador 99 se establece en el programa que utiliza este formato de
registro.

.4/

La palabra clave OVERLAY se utiliza para el formato de registro CUSFLDS


de forma que el registro CUSPMT en la pantalla no se borre cuando el
registro CUSFLDS se grabe en la pantalla.

COBOL/400 Gua del usuario

'

.5/

Las constantes como por ejemplo Nombre, Direccin y Ciudad describen


los campos que graba el programa.

.6/

Las entradas de lnea y posicin identifican dnde se graban los campos o


constantes en la pantalla.

Proceso de un Archivo Transaction Descrito Externamente


Cuando se procesa un archivo TRANSACTION descrito externamente, el sistema
operativo transforma los datos del programa al formato especificado para el archivo
y visualiza los datos. Cuando los datos se pasan al programa, se transforman al
formato utilizado por el programa.
El sistema operativo proporciona informacin de control del dispositivo para realizar
operaciones de entrada/salida para el dispositivo. Cuando se solicita un registro
de entrada desde el dispositivo, el sistema operativo emite la peticin y luego
extrae la informacin de control del dispositivo de los datos antes de que se pasen
stos al programa. Adems, el sistema operativo puede pasar indicadores al programa indicando qu campos, si los hay, se cambian en el registro.
Cuando el programa solicita una operacin de salida, pasa el registro de salida al
sistema operativo. El sistema operativo proporciona la informacin de control del
dispositivo necesaria para visualizar el registro. Tambin aade cualquier informacin constante especificada para el formato del registro cuando se visualiza el
registro.
Cuando el registro pasa a un programa, los campos se disponen de acuerdo con el
orden especificado en las DDS. El orden en que se visualizan los campos se basa
en las posiciones de pantalla (nmeros y posiciones de lnea) asignadas a los
campos en las DDS. Por lo tanto, el orden en que se especifican los datos en las
DDS y el orden en que aparecen en la pantalla no tiene por qu ser el mismo.

Utilizacin de Indicadores con Archivos Transaction


Los indicadores son tems de datos Booleanos que pueden tener los valores B"0"
B"1".
Cuando se define un formato de registro para un archivo utilizando las DDS, se
pueden condicionar las opciones utilizando indicadores; los indicadores tambin
pueden utilizarse para reflejar respuestas particulares. Estos indicadores se
conocen como OPTION y RESPONSE, respectivamente.
Los indicadores de opcin proporcionan opciones tales como espaciado, subrayado
y permiso o peticin de transferencia de datos desde un programa a una impresora
o dispositivo de pantalla. Los indicadores de respuesta proporcionan informacin
de respuesta a un programa desde un dispositivo, como por ejemplo las teclas de
funcin pulsadas por un usuario de estacin de trabajo y si se han introducido los
datos.
Los indicadores pueden pasarse con registros de datos dentro de un rea de
registro, o fuera del rea de registro en un rea de indicadores separada.

Captulo 8. Archivos Transaccin

149

Indicadores en un rea de Indicadores Separada


Si especifica la palabra clave a nivel de campo INDARA en las DDS, todos los
indicadores definidos en el formato de registro o en los formatos para ese archivo
se pasan al programa y desde el programa en un rea de indicadores separada,
no en el rea de registro. Para informacin sobre cmo especificar la palabra
clave INDARA, vea la publicacin DDS Reference.
La entrada de control de archivo que tenga la palabra clave INDARA especificada
en las DDS debe tener el atributo de rea de indicadores separada, SI, como parte
del nombre de asignacin.
Las ventajas de utilizar un rea de indicadores separada son las siguientes:
El nmero y orden de indicadores utilizados en una instruccin de E/S para
cualquier formato de registro en un archivo no tiene que coincidir con el
nmero y orden de indicadores especificados en las DDS para dicho formato
de registro.
El programa asocia el nmero del indicador en una entrada de descripcin de
datos con el indicador apropiado.

Indicadores en el rea de Registro


Si la palabra clave INDARA no se utiliza en las DDS del archivo, los indicadores se
crean en el rea de registro. Cuando los indicadores se definen en un formato de
registro para un archivo, se leen, regraban y graban con los datos en el rea de
registro.
El nmero y orden de indicadores definido en las DDS para un formato de registro
para un archivo determina el nmero y orden en que deben codificarse en el programa las entradas de descripcin de datos para los indicadores en el formato de
registros.
La entrada de control de archivo que no tiene la palabra clave INDARA especificada en las DDS asociadas no deber tener el atributo de rea de indicadores
separada, SI, como parte del nombre de asignacin.
Si una instruccin COPY de Formato 2 se utiliza para copiar indicadores en un
programa fuente, estos indicadores se definen en el orden en el que estn especificados en las DDS para el archivo.

Clusula ASSIGN y Atributo de rea de Indicadores Separada


Formato
55ASSIGNWORKSTATION -nomb-arch5%
TO
-SI

Las reglas para la clusula ASSIGN son las siguientes:


El dispositivo debe ser WORKSTATION

150

COBOL/400 Gua del usuario

Si se codifica -SI, el nombre de archivo debe referirse a un archivo que tiene la


palabra clave a nivel de archivo INDARA especificada en sus DDS.
Para ms informacin acerca de la clusula ASSIGN, consulte el apartado Clusula ASSIGN en la pgina 181.

Entrada de Descripcin de DatosDatos Booleanos


Cuando utiliza indicadores en un programa COBOL, debe describirlos como tems
de datos Booleanos utilizando la entrada de descripcin de datos para datos
booleanos.
Formato 4 - Datos Booleanos

55nmero-nivel5

nomb-fech-1 REDEFINESnomb-fech-2

FILLER LIKE nomb-fech-3

55

PICTURE1

PIC IS

55

DISPLAY

USAGE

IS

55

OCCURSentero--1TOentero--2DEPENDINGnomb-fech-45

TIMES
ON

entero--2

TIMES

55

INDEXEDnom-ndice-1

BY

55

INDICATORentero--3

INDICATORS

INDIC

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

55

\ SYNCHRONIZED JUSTIFIED \

\
SYNC LEFT
JUST RIGHT
\

\
RIGHT
\

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

5.5%

VALUELiteral-boolean

IS

Captulo 8. Archivos Transaccin

151

Consideraciones Especiales
A continuacin se dan las consideraciones especiales para las clusulas utilizadas
con datos booleanos. El resto de reglas para las clusulas son las mismas que
aqullas descritas en la seccin Estructura del Programa COBOL de la publicacin COBOL/400 Reference.

Clusula PICTURE: Se define un nombre de datos booleanos elemental


mediante una clusula PICTURE que contiene slo un 1.
Clusula USAGE: USAGE debe definirse implcita o explcitamente como
DISPLAY.
Clusula OCCURS: Cuando las clusulas OCCURS e indicador INDICATOR se
especifican a un nivel elemental, se define una tabla de tems de datos booleanos
con cada elemento de la tabla correspondiente a un indicador externo. El primer
elemento de la tabla corresponde al nmero de indicador especificado en la clusula INDICATOR; el segundo elemento corresponde al indicador que sigue secuencialmente al indicador especificado mediante la clusula INDICATOR.
Por ejemplo, si se codifica lo siguiente, SWITCHES (1) corresponde al indicador
16, SWITCHES (2) corresponde al indicador 17... y SWITCHES (10) corresponde
al indicador 25:
7

SWITCHES

PIC 1
OCCURS 1 TIMES
INDICATOR 16.

Clusula INDICATOR: Si los campos del indicador estn en un rea de indicador


separada, la clusula INDICATOR asocia un indicador definido en las DDS con un
tem de datos booleanos. Si los campos de indicador estn en un rea de registro,
se comprueba la sintaxis de la clusula INDICATOR, aunque se trata como un
comentario.
El Entero-3 tiene que ser un valor del 1 al 99.
La clusula INDICATOR slo debe especificarse a nivel elemental.

Clusula VALUE: La clusula VALUE especifica el contenido inicial de un tem


de datos booleanos. Los valores permitidos para los literales booleanos son B"0",
B"1" y ZERO.
Clusula LIKE: No se puede utilizar esta clusula para cambiar la longitud de un
tem de datos.

Frase INDICATORS
Cuando la frase INDICATORS se utiliza en las instrucciones READ, REWRITE y
WRITE (vea la Figura 57 en la pgina 158), especifica los indicadores que se van
a leer, regrabar y grabar.
El identificador especificado en la frase INDICATORS puede ser uno de los
siguientes:
Un tem elemental de datos booleanos

152

COBOL/400 Gua del usuario

Un tem elemental de grupo con tems de datos booleanos subordinados a l.


(Los tems de datos booleanos pueden estar en cualquier lugar del grupo, pero
son los nicos tems que el usuario puede leer, grabar o regrabar).
El identificador no puede estar subordinado a un tem que est sujeto a una
clusula OCCURS.

Indicadores en un rea de Indicadores Separada


Si se especifica INDARA en las DDS para el archivo, la utilizacin de los indicadores referenciados en la frase INDICATORS est basada en el nmero del indicador.
En una instruccin READ, slo se actualizan los nmeros de indicador de respuesta referenciados por la frase INDICATORS. Los indicadores especificados
en las DDS para el formato, pero no referenciados por la frase INDICATORS,
se ignoran. No se modifican los indicadores referenciados por la frase
INDICATORS pero no especificados en las DDS.
En una instruccin WRITE o REWRITE, slo se utilizan los indicadores de
opcin referenciados mediante la frase INDICATORS. Los indicadores especificados en las DDS para el formato pero no referenciados por la frase
INDICATORS, se consideran como DESACTIVADOS. Se ignoran los indicadores referenciados por la frase INDICATORS pero no utilizados en las DDS
para el formato.
Si no se especifica la frase INDICATORS, ocurre lo siguiente:
En la instruccin READ, no se actualizan los indicadores.
En una instruccin WRITE o REWRITE, los indicadores se tratan como si estuvieran DESACTIVADOS.

Indicadores en el rea de Registro


Si no se especifica INDARA en las DDS para el archivo, el tamao del identificador
en la frase INDICATORS de una instruccin de E/S (consulte la Figura 57 en la
pgina 158) debe ser igual al nmero de opcin o indicadores de respuesta definidos en las DDS para ese formato.
En una instruccin READ, el tamao del identificador debe ser igual al nmero
de los indicadores de respuesta.
En una instruccin REWRITE o WRITE, el tamao del identificador debe ser
igual al nmero de los indicadores de opcin.
Los contenidos del identificador no se comprueban, pero se copian al registro o
desde el comienzo del registro, de byte en byte; los nmeros de indicador se
ignoran.
Si se omite la frase INDICATORS, se siguen pasando al rea de registro los datos
de los campos de indicadores en el registro. La frase INDICATORS slo se utiliza
para copiar indicadores a un rea de registros antes de una instruccin WRITE o
REWRITE, o fuera de un rea de registros despus de una instruccin READ.

Captulo 8. Archivos Transaccin

153

Programas Ejemplo con Indicadores


Esta seccin contiene ejemplos de programas en COBOL/400 que ilustran la utilizacin de indicadores en un rea de registro o un rea de indicadores separada.
Todos los programas realizan lo siguiente:
1. Determinan la fecha actual.
2. Si es el primer da del mes, activan un indicador de opcin que hace que aparezca un campo de salida y parpadee.
3. Le permite pulsar las teclas de funcin para finalizar el programa, activar los
indicadores de respuesta y llamar a programas para escribir informes diarios o
mensuales.
La Figura 56 en la pgina 156 muestra un programa que utiliza los indicadores en
el rea de registro pero no utiliza la frase INDICATORS en ninguna instruccin de
E/S. La Figura 55 en la pgina 155 muestra las DDS asociadas para el archivo.
La Figura 57 en la pgina 158 muestra un programa que utiliza indicadores en el
rea de registro y la frase INDICATORS en las instrucciones de E/S. Las DDS
asociadas para la Figura 57 son la Figura 55 en la pgina 155.
La Figura 59 en la pgina 161 muestra un programa que utiliza indicadores en un
rea de indicadores separada, definida en WORKING-STORAGE utilizando la instruccin COPY Formato 2. La Figura 58 en la pgina 160 muestra las DDS asociadas para el archivo.
La Figura 60 en la pgina 163 muestra un programa que utiliza indicadores en un
rea de indicadores separada, definida en una tabla WORKING-STORAGE. Las
DDS asociadas para el archivo son las mismas que en la Figura 58 en la
pgina 160.

154

COBOL/400 Gua del usuario

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

Impreso

U M / 0 5 0 *
en

Espaa

*El nm ero de hojas por rea de re lleno puede variar lige ram ente.

Archivo

Signo

Descripcin

Pgina

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

D D S

1 4

1 5

D E

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

D E

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

P A N T A L L A

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

A R C H I VO

Tipo Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Indicador

Espec

(A/O/*)
7

A *

Longitud

3 6

Utilizacin

Nom bre

D ecimales

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

de Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P A R A

P os

4 2

4 3

4 4

4 5

4 6

4 7

4 8

4 9

E J E MP L O S

5 0

5 1

5 2

5 3

D E

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

I ND I C ADOR E S

A *

/ 3 ( 9 9
C F 0

' F

/ 5 ( 5 1
C F 0

'

I N F OR M E

D I A R I O '

C F 0
/ 9 ( 5 2

'

I N F OR M E

ME N S U A L

'

F OR MA T 1

I N

D E

P R OG R A M A '

A *
A
A
A

D E P T NO
0 1

1 0

1 0

1 0

3 2

2 0

2 6

' N UM E R O

D E

' P R OD U C I R
D S P A T R ( B L

D E P A R T AM E N T O :

I N F OR M E S

'

M E N S U A L E S

'

A *
A

2 4

0 1 ' F 5

I N F OR M E

D I A R

2 4

2 6

' F 9

I N F OR M E

M E N S U A L

I O '

2 4

5 3

' F 3

T E R M I N A R

'

'

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

Figura 55. Ejemplo de un Programa que Utiliza Indicadores en el rea de Registros sin Utilizar la Frase
INDICATORS en la SentenciaDatos de E/S: Especificaciones de Descripcin

.1/

No se utiliza la palabra clave INDARA; los indicadores se almacenan en el


rea de registro con los campos de datos.

.2/

Se especifica un formato de registro, FORMAT1.

.3/

Se asocian tres indicadores con tres teclas de funcin. El indicador 99 se


activar cuando pulse F3, y as sucesivamente.

.4/

Se define un campo para la salida.

.5/

El indicador 01 se define para hacer que el campo de constante asociado


parpadee si est activo el indicador.

.6/

Las definiciones de teclas de funcin (F) se documentan en la pantalla de


estacin de trabajo.

Captulo 8. Archivos Transaccin

155

8 0

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2
PROGRAM-ID.
XMPLE71.
3\
PROGRAMA EJEMPLO CON INDICADORES EN REA DE REGISTRO.
3 4
AUTHOR.
PROGRAMMER NAME.
4 5
INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 6
DATE-WRITTEN. 12/8/88.
6 7
DATE-COMPILED. 5/24/94 11:2:36
.
7 8 ENVIRONMENT DIVISION.
8 9
CONFIGURATION SECTION.
9 1
SOURCE-COMPUTER. IBM-AS4.
1 11
OBJECT-COMPUTER. IBM-AS4.
11 12
INPUT-OUTPUT SECTION.
12 13
FILE-CONTROL.
13 14
SELECT DISPFILE
14 15
ASSIGN TO WORKSTATION-DSPFILEX .1/
15 16
ORGANIZATION IS TRANSACTION
16 17
ACCESS
IS SEQUENTIAL.
17 18 DATA DIVISION.
18 19
FILE SECTION.
19 2
FD DISPFILE
2 21
LABEL RECORDS ARE OMITTED
21 22
DATA RECORD IS DISP-REC.
22 23
1 DISP-REC.
23 24
COPY DDS-ALL-FORMATS OF DSPFILEX. .2/
24 +1
5 DSPFILEX-RECORD PIC X(8).
+2\FORMATO ENTRADA:FORMAT1 DESDE ARCHIVO DSPFILEX DE BIBLIOTECA XMPLIB
+3\
25 +4
5 FORMAT1-I
REDEFINES DSPFILEX-RECORD.
26 +5
6 FORMAT1-I-INDIC.
27 +6
7 IN99
PIC 1 INDIC 99. .3/
+7\
FIN DE PROGRAMA
28 +8
7 IN51
PIC 1 INDIC 51.
+9\
INFORME DIARIO
29 +1
7 IN52
PIC 1 INDIC 52.
+11\
INFORME MENSUAL
3 +12
6 DEPTNO
PIC X(5).
+13\FORMATO SALIDA:FORMAT1 DESDE ARCHIVO DSPFILEX DE BIBLIOTECA XMPLIB
+14\
31 +15
5 FORMAT1-O
REDEFINES DSPFILEX-RECORD.
32 +16
6 FORMAT1-O-INDIC.
33 +17
7 IN1
PIC 1 INDIC 1.
25
34 26 WORKING-STORAGE SECTION.
35 27 1 CURRENT-DATE.
36 28
5 CURR-YEAR
PIC 9(2).
37 29
5 CURR-MONTH
PIC 9(2).
38 3
5 CURR-DAY
PIC 9(2).
39 31 1 INDIC-AREA. .4/
4 32
5 IN1
PIC 1.
41 33
88 NEW-MONTH .5/
VALUE B"1".
42 34
5 IN51
PIC 1.
43 35
88 WANT-DAILY
VALUE B"1".
44 36
5 IN52
PIC 1.
45 37
88 WANT-MONTHLY
VALUE B"1".
46 38
5 IN99
PIC 1.
47 39
88 NOT-END-OF-JOB
VALUE B"".
48 4
88 END-OF-JOB
VALUE B"1".
49 41 PROCEDURE DIVISION.
42 XAMPLE3-MAIN.
5 43
OPEN I-O DISPFILE.
51 44
ACCEPT CURRENT-DATE FROM DATE.
52 45
SET NOT-END-OF-JOB TO TRUE.
53 46
PERFORM DISPLAY-SCREEN THRU READ-AND-PROCESS-SCREEN
47
UNTIL END-OF-JOB.
54 48
CLOSE DISPFILE.
55 49
STOP RUN.
5 DISPLAY-SCREEN.
56 51
MOVE ZEROS TO INDIC-AREA. .6/
57 52
IF CURR-DAY = 1 THEN
58 53
SET NEW-MONTH TO TRUE. .7/
59 54
MOVE CORR INDIC-AREA TO FORMAT1-O-INDIC. .8/
6 55
WRITE DISP-REC FORMAT IS "FORMAT1". .9/
56 READ-AND-PROCESS-SCREEN.
61 57
MOVE ZEROS TO INDIC-AREA.
62 58
READ DISPFILE FORMAT IS "FORMAT1". .1/

NOMCOPIA

FECH/CAM
3/9/94
3/22/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/25/94
3/25/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 56 (Parte 1 de 2). Ejemplo de un Programa que Utiliza Indicadores en el rea de Registros sin la Frase
INDICATORS en la SentenciaCOBOL de E/S: Programa Fuente

156

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
63 59
MOVE CORR FORMAT1-I-INDIC TO INDIC-AREA. .11/
64 6
IF WANT-DAILY THEN
65 61
CALL "DAILY" USING DEPTNO .12/
62
ELSE
66 63
IF WANT-MONTHLY THEN
67 64
CALL "MONTHLY" USING DEPTNO.
\ \ \ \ \
F I N
D E
F U E N T E \ \
5763CB1 V3RM5
Mensajes AS/4 COBOL
INST
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)

Registros fuente ledos . . . . . . :


64
Registros de copia ledos . . . . . :
17
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad emitido ms alto:

LBL91 Programa XMPLE71 creado en biblioteca XMPLIB.


1
\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 56 (Parte 2 de 2). Ejemplo de un Programa que Utiliza Indicadores en el rea de Registros sin la Frase
INDICATORS en la SentenciaCOBOL de E/S: Programa Fuente

.1/

El atributo del rea de indicadores separada, SI, no se codifica en la clusula


ASSIGN.

.2/

La instruccin COPY con Formato 2 define los campos de datos y los indicadores en el rea de registro.

.3/

Dado que el archivo no tiene un rea de indicadores separada, los indicadores de respuesta y de opcin se definen en el orden en que se utilizan
en las DDS, y los nmeros de indicadores se tratan como documentacin.

.4/

Todos los indicadores utilizados por el programa se definen mediante


nombres significativos en las entradas de descripcin de datos en
WORKING-STORAGE. Aqu se omiten los nmeros de los indicadores
porque no tienen efecto.

.5/

Para cada indicador, se asocia un nombre significativo de condicin de nivel


88 con un valor para dicho indicador.

.6/

Inicializar el nivel de grupo a cero.

.7/

Si es el primer da del mes, se activa IN01 en WORKING-STORAGE.

.8/

Los indicadores adecuados a la salida de FORMAT1 se copian en el rea de


registros.

.9/

FORMAT1 se graba en la pantalla de estacin de trabajo con datos y valores


del indicador en el rea de registro.
La frase INDICATORS no es necesaria porque no hay rea de indicadores
separada y se han establecido los valores del indicador en el rea de registro
mediante la instruccin anterior MOVE CORRESPONDING.

.1/ FORMAT1 se lee desde la pantalla de estacin de trabajo, incluyendo datos


e indicadores.
.11/ Los indicadores de respuesta para FORMAT1 se copian del rea de registros
para las entradas de descripcin de datos en WORKING-STORAGE.
.12/ Si se pulsa F5, se procesa una llamada de programa.

Captulo 8. Archivos Transaccin

157

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2
PROGRAM-ID.
XMPLE713.
3\ PROGRAMA EJEMPLO - ARCHIVO CON INDICADORES EN REA DE REGISTRO
3 4
AUTHOR.
PROGRAMMER NAME.
4 5
INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 6
DATE-WRITTEN. 12/1/88.
6 7
DATE-COMPILED. 5/24/94 11:4:34
.
7 8 ENVIRONMENT DIVISION.
8 9
CONFIGURATION SECTION.
9 1
SOURCE-COMPUTER. IBM-AS4.
1 11
OBJECT-COMPUTER. IBM-AS4.
11 12
INPUT-OUTPUT SECTION.
12 13
FILE-CONTROL.
13 14
SELECT DISPFILE
14 15
ASSIGN TO WORKSTATION-DSPFILEX .1/
15 16
ORGANIZATION IS TRANSACTION
16 17
ACCESS
IS SEQUENTIAL.
17 18 DATA DIVISION.
18 19
FILE SECTION.
19 2
FD DISPFILE
2 21
LABEL RECORDS ARE OMITTED
21 22
DATA RECORD IS DISP-REC.
22 23
1 DISP-REC.
23 24
COPY DDS-ALL-FORMATS OF DSPFILEX. .2/
24 +1
5 DSPFILEX-RECORD PIC X(8).
+2\FORMATO ENTRADA:FORMAT1 DESDE ARCHIVO DSPFILEX DE BIBLIOTECA XMPLIB
+3\
25 +4
5 FORMAT1-I
REDEFINES DSPFILEX-RECORD.
26 +5
6 FORMAT1-I-INDIC.
27 +6
7 IN99
PIC 1 INDIC 99. .3/
+7\
FIN DE PROGRAMA
28 +8
7 IN51
PIC 1 INDIC 51.
+9\
INFORME DIARIO
29 +1
7 IN52
PIC 1 INDIC 52.
+11\
INFORME MENSUAL
3 +12
6 DEPTNO
PIC X(5).
+13\FORMATO SALIDA:FORMAT1 DESDE ARCHIVO DSPFILEX DE BIBLIOTECA XMPLIB
+14\
31 +15
5 FORMAT1-O
REDEFINES DSPFILEX-RECORD.
32 +16
6 FORMAT1-O-INDIC.
33 +17
7 IN1
PIC 1 INDIC 1.
25
34 26 WORKING-STORAGE SECTION.
35 27 1 CURRENT-DATE.
36 28
5 CURR-YEAR
PIC 9(2).
37 29
5 CURR-MONTH
PIC 9(2).
38 3
5 CURR-DAY
PIC 9(2).
31
39 32 77 IND-OFF
PIC 1
VALUE B"".
4 33 77 IND-ON
PIC 1
VALUE B"1".
34
41 35 1 RESPONSE-INDICS.
42 36
5 END-OF-PROGRAM
PIC 1. .4/
43 37
5 DAILY-REPORT
PIC 1.
44 38
5 MONTHLY-REPORT
PIC 1.
45 39 1 OPTION-INDICS.
46 4
5 NEW-MONTH
PIC 1.
41
47 42 PROCEDURE DIVISION.
43 XMPLE3-MAIN.
48 44
OPEN I-O DISPFILE.
49 45
ACCEPT CURRENT-DATE FROM DATE.
5 46
MOVE IND-OFF TO END-OF-PROGRAM.
51 47
PERFORM DISPLAY-SCREEN THRU READ-AND-PROCESS-SCREEN
48
UNTIL END-OF-PROGRAM = IND-ON.
52 49
CLOSE DISPFILE.
53 5
STOP RUN.
51
52 DISPLAY-SCREEN.
54 53
MOVE ZEROS TO OPTION-INDICS.
55 54
IF CURR-DAY = 1 THEN .5/
56 55
MOVE IND-ON TO NEW-MONTH.
57 56
WRITE DISP-REC FORMAT IS "FORMAT1" .6/
57
INDICATORS ARE OPTION-INDICS.
58

NOMCOPIA

FECH/CAM
3/7/94
3/22/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/22/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/22/94

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

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/SPrograma Fuente COBOL

158

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
59 READ-AND-PROCESS-SCREEN.
58 6
MOVE ZEROS TO RESPONSE-INDICS.
59 61
READ DISPFILE FORMAT IS "FORMAT1" .7/
62
INDICATORS ARE RESPONSE-INDICS. .8/
6 63
IF DAILY-REPORT = IND-ON THEN
61 64
CALL "DAILY" USING DEPTNO .9/
65
ELSE
62 66
IF MONTHLY-REPORT = IND-ON THEN
63 67
CALL "MONTHLY" USING DEPTNO.
\ \ \ \ \
F I N
D E
F U E N T E \ \
5763CB1 V3RM5
Mensajes AS/4 COBOL
INST
\ \ \ \ \
E N D
O F
M E S S A G E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)

Registros fuente ledos . . . . . . :


67
Registros de copia ledos . . . . . :
17
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad ms alta emitido:

LBL91 Programa XMPLE713 creado en biblioteca XMPLIB.


\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

NOMCOPIA

FECH/CAM

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/SPrograma Fuente COBOL

.1/

El atributo del rea de indicadores separada, SI, no se codifica en la clusula ASSIGN.

.2/

La instruccin COPY con Formato 2 define los campos de datos y los indicadores en el rea de registro.

.3/

Dado que el archivo no tiene un rea de indicadores separada, los indicadores de respuesta y de opcin se definen en el orden en que se utilizan
en las DDS, y los nmeros de indicadores se tratan como documentacin.

.4/

Todos los indicadores que utiliza el programa se definen con nombres significativos en entradas de descripcin de datos en WORKING-STORAGE.
Aqu se omiten los nmeros de los indicadores debido a que no tienen
efecto. Los indicadores deben definirse en el orden necesario mediante el
archivo de pantalla.

.5/

Si es el primer da del mes, se activa IN01 en WORKING-STORAGE.

.6/

FORMAT1 se escribe en la pantalla de estacin de trabajo:


La frase INDICATORS hace que el contenido de la variable
OPTION-INDICS se copie en el comienzo del rea de registro.
Los valores de datos y de indicador se escriben en la pantalla de
estacin de trabajo.

.7/

FORMAT1 se lee desde la pantalla de estacin de trabajo, incluyendo datos


e indicadores.

.8/

La frase INDICATORS hace que los bytes se copien desde el comienzo del
rea de registro a RESPONSE-INDICS.

.9/

Si se pulsa F5, se procesa una llamada de programa.

Captulo 8. Archivos Transaccin

159

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

Impreso

U M / 0 5 0 *
en

Espaa

*El nm ero de hojas por rea de re lleno puede variar lige ram ente.

Archivo

Signo

Descripcin

Pgina

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

V I

1 5

1 8

1 9

2 0

2 1

2 2

2 3

Z A R

2 4

2 5

2 6

D D S

2 7

2 8

2 9

D E

3 0

3 1

3 2

3 3

3 4

3 5

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

S U A L

Tipo Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Indicador

Espec

(A/O/*)
7

A *

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

de Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

A R C H I VO

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P os

4 2

P A R A

4 3

4 4

4 5

4 6

4 7

4 8

4 9

5 0

5 1

E J E MP L O S

5 2

5 3

5 4

D E

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

I ND I C ADOR E S

A *
A

I ND A R A

F OR MA T 1

C F 0 3 ( 9 9

' F

C F 0 5 ( 5 1

'

I N F OR M E

I N

D E

P R OG R A M A '
D I A R I O '

C F 0 9 ( 5 2

'

I N F OR M E

ME N S U A L

'

A *
A
A
A

D E P T NO
0 1

1 0

1 0

1 0

3 2

2 0

2 6

' N UM E R O

D E

' P R OD U C I R
D S P A T R ( B L

D E P A R T AM E N T O :

I N F OR M E S

'

M E N S U A L E S

'

A *
A

2 4

0 1 ' F 5

I N F OR M E

D I A R

2 4

2 6

' F 9

I N F OR M E

M E N S U A L

I O '

2 4

5 3

' F 3

T E R M I N A R

'

'

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

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

.1/

160

Se especifica la palabra clave INDARA; los indicadores se almacenan en un


rea de indicadores separada, no en el rea de registro. Excepto para esta
especificacin, las DDS para este archivo son las mismas que las mostradas
en la Figura 55 en la pgina 155.

COBOL/400 Gua del usuario

8 0

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
XMPLE717.
3\ PROGRAMA EJEMPLO - ARCHIVO CON REA DE INDICADORES SEPARADA
3 4 AUTHOR.
PROGRAMMER NAME.
4 5 INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 6 DATE-WRITTEN. 12/8/88.
6 7 DATE-COMPILED. 5/24/94 12:53:17
.
7 8 ENVIRONMENT DIVISION.
8 9 CONFIGURATION SECTION.
9 1 SOURCE-COMPUTER. IBM-AS4.
1 11 OBJECT-COMPUTER. IBM-AS4.
11 12 INPUT-OUTPUT SECTION.
12 13 FILE-CONTROL.
13 14
SELECT DISPFILE
14 15
ASSIGN TO WORKSTATION-DSPFILE-SI .1/
15 16
ORGANIZATION IS TRANSACTION
16 17
ACCESS IS SEQUENTIAL.
18
17 19 DATA DIVISION.
18 2 FILE SECTION.
19 21 FD DISPFILE
2 22
LABEL RECORDS ARE OMITTED
21 23
DATA RECORD IS DISP-REC.
22 24 1 DISP-REC.
23 25
COPY DDS-ALL-FORMATS OF DSPFILE. .2/
24 +1
5 DSPFILE-RECORD PIC X(5).
+2\FORMATO ENTRADA:FORMAT1 DESDE ARCHIVO DSPFILE DE BIBLIOTECA XMPLIB
+3\
25 +4
5 FORMAT1-I
REDEFINES DSPFILE-RECORD.
26 +5
6 DEPTNO
PIC X(5).
+6\FORMATO SALIDA:FORMAT1 DESDE ARCHIVO DSPFILE
DE BIBLIOTECA XMPLIB
+7\
+8\
5 FORMAT1-O
REDEFINES DSPFILE-RECORD.
26
27 27 WORKING-STORAGE SECTION.
28 28 1 CURRENT-DATE.
29 29
5 CURR-YEAR
PIC 9(2).
3 3
5 CURR-MONTH
PIC 9(2).
31 31
5 CURR-DAY
PIC 9(2).
32
32 33
77 IND-OFF
PIC 1 VALUE B"".
33 34
77 IND-ON
PIC 1 VALUE B"1".
34 35 1 DISPFILE-INDICS.
35 36
COPY DDS-ALL-FORMATS-INDIC OF DSPFILE. .3/
36 +1
5 DSPFILE-RECORD.
+2\FORMATO ENTRADA:FORMAT1 DESDE ARCHIVO DSPFILE DE BIBLIOTECA XMPLIB
+3\
37 +4
6 FORMAT1-I-INDIC.
38 +5
7 IN51
PIC 1 INDIC 51. .4/
+6\
INFORME DIARIO
39 +7
7 IN52
PIC 1 INDIC 52.
+8\
INFORME MENSUAL
4 +9
7 IN99
PIC 1 INDIC 99.
+1\
FIN DE PROGRAMA
+11\FORMATO SALIDA:FORMAT1 DESDE ARCHIVO DSPFILE DE BIBLIOTECA XMPLIB
+12\
41 +13
6 FORMAT1-O-INDIC.
42 +14
7 IN1
PIC 1 INDIC 1.
37
43 38 PROCEDURE DIVISION.
39
4 MAIN-PROCESS.
41
44 42
OPEN I-O DISPFILE.
45 43
ACCEPT CURRENT-DATE FROM DATE.
46 44
MOVE IND-OFF TO IN99 IN FORMAT1-I-INDIC.
47 45
PERFORM DISPLAY-SCREEN THRU READ-AND-PROCESS-SCREEN
46
UNTIL IN99 IN FORMAT1-I-INDIC = IND-ON.
48 47
CLOSE DISPFILE.
49 48
STOP RUN.
49
5 DISPLAY-SCREEN.
51
5 52
MOVE ZEROS TO FORMAT1-O-INDIC.
51 53
IF CURR-DAY = 1 THEN
52 54
MOVE IND-ON TO IN1 IN FORMAT1-O-INDIC. .5/

NOMCOPIA

FECH/CAM
3/9/94
3/22/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/22/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/9/94
3/22/94

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 59 (Parte 1 de 2). Listado COBOL que Utiliza Indicadores en un rea de Indicadores Separada

Captulo 8. Archivos Transaccin

161

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
53 55
WRITE DISP-REC FORMAT IS "FORMAT1"
56
INDICATORS ARE FORMAT1-O-INDIC. .6/
57
58 READ-AND-PROCESS-SCREEN.
59
54 6
MOVE ZEROS TO FORMAT1-I-INDIC.
55 61
READ DISPFILE FORMAT IS "FORMAT1"
62
INDICATORS ARE FORMAT1-I-INDIC. .7/
56 63
IF IN51 IN FORMAT1-I-INDIC = IND-ON THEN
57 64
CALL "DAILY" USING DEPTNO .8/
65
ELSE
58 66
IF IN52 IN FORMAT1-I-INDIC = IND-ON THEN
59 67
CALL "MONTHLY" USING DEPTNO.
\ \ \ \ \
F I N
D E
F U E N T E \ \
5763CB1 V3RM5
Mensajes AS/4 COBOL
INST
\
23 MSGID: LBL6 GRAVEDAD: 1 NUMSEC: 25
Mensaje . . . . :
No se encontraron campos OUTPUT para formato FORMAT1.
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
1

Registros fuente ledos . . . . . . :


67
Registros de copia ledos . . . . . :
22
Miembros de copia procesados . . . :
2
Errores de secuencia . . . . . . . :

Mensaje de gravedad ms alta emitido:


1
LBL91 Programa XMPLE717 creado en biblioteca XMPLIB.
\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 59 (Parte 2 de 2). Listado COBOL que Utiliza Indicadores en un rea de Indicadores Separada

162

.1/

El atributo del rea de indicadores separada, SI, se especifica en la clusula


ASSIGN.

.2/

La instruccin COPY con Formato 2 genera descripciones de datos en el


rea de registro solamente para campos de datos. Las entradas de descripcin de datos para los indicadores no se generan debido a que el rea de
indicadores separada se ha especificado para el archivo.

.3/

La instruccin COPY con Formato 2, con el atributo INDICATOR, INDIC,


define las entradas de descripcin de datos en WORKING-STORAGE para
todos los indicadores utilizados en las DDS para el formato de registro del
archivo.

.4/

Debido a que el archivo tiene un rea de indicadores separada, los nmeros


de los indicadores utilizados en las entradas de descripcin de datos no se
tratan como documentacin.

.5/

Si es el primer da del mes, se activa IN01 (01) en el rea de indicadores


separada para FORMAT1.

.6/

La frase INDICATORS es necesaria para enviar los valores de los indicadores a la pantalla de estacin de trabajo.

.7/

La frase INDICATORS es necesaria para recibir valores de los indicadores


desde la pantalla de estacin de trabajo. Si pulsa F5, se activa IN51.

.8/

Si se ha activado IN51, se procesa una llamada de programa.

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
XMPLE72.
3\
PROGRAMA EJEMPLO
4\
ARCHIVO CON REA DE IND.SEPARADA EN REA ALMACENAMIENTO
3 5 AUTHOR.
PROGRAMMER NAME.
4 6 INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 7 DATE-WRITTEN. 12/8/88.
6 8 DATE-COMPILED. 5/24/94 12:46:
.
7 9 ENVIRONMENT DIVISION.
8 1 CONFIGURATION SECTION.
9 11 SOURCE-COMPUTER. IBM-AS4.
1 12 OBJECT-COMPUTER. IBM-AS4.
11 13 INPUT-OUTPUT SECTION.
12 14 FILE-CONTROL.
13 15
SELECT DISPFILE
14 16
ASSIGN TO WORKSTATION-DSPFILE-SI .1/
15 17
ORGANIZATION IS TRANSACTION
16 18
ACCESS IS SEQUENTIAL.
19
17 2 DATA DIVISION.
18 21 FILE SECTION.
19 22 FD DISPFILE
2 23
LABEL RECORDS ARE OMITTED
21 24
DATA RECORD IS DISP-REC.
22 25 1 DISP-REC.
23 26
COPY DDS-ALL-FORMATS OF DSPFILE. .2/
24 +1
5 DSPFILE-RECORD PIC X(5).
+2\FORMATO ENTRADA:FORMAT1 DESDE ARCHIVO DSPFILE DE BIBLIOTECA XMPLIB
+3\
25 +4
5 FORMAT1-I
REDEFINES DSPFILE-RECORD.
26 +5
6 DEPTNO
PIC X(5).
+6\FORMATO SALIDA:FORMAT1 DESDE ARCHIVO DSPFILE
DE BIBLIOTECA XMPLIB
+7\
+8\
5 FORMAT1-O
REDEFINES DSPFILE-RECORD.
27
27 28 WORKING-STORAGE SECTION.
28 29 1 CURRENT-DATE.
29 3
5 CURR-YEAR
PIC 9(2).
3 31
5 CURR-MONTH
PIC 9(2).
31 32
5 CURR-DAY
PIC 9(2).
33
32 34 1 INDIC-AREA.
33 35
5 INDIC-TABLE OCCURS 99
PIC 1
INDICATOR 1. .3/
34 36
88 IND-OFF
VALUE B"".
35 37
88 IND-ON
VALUE B"1".
38
36 39 1 DISPFILE-INDIC-USAGE.
37 4
5 IND-NEW-MONTH
PIC 9(2) VALUE 1.
38 41
5 IND-DAILY
PIC 9(2) VALUE 51. .4/
39 42
5 IND-MONTHLY
PIC 9(2) VALUE 52.
4 43
5 IND-EOJ
PIC 9(2) VALUE 99.
44
41 45 PROCEDURE DIVISION.
46
47 XMPLE-MAIN.
42 48
OPEN I-O DISPFILE.
43 49
ACCEPT CURRENT-DATE FROM DATE.
44 5
SET IND-OFF (IND-EOJ) TO TRUE.
45 51
PERFORM DISPLAY-SCREEN THRU READ-AND-PROCESS-SCREEN
52
UNTIL IND-ON (IND-EOJ).
46 53
CLOSE DISPFILE.
47 54
STOP RUN.
55
56 DISPLAY-SCREEN.
57
48 58
MOVE ZEROS TO INDIC-AREA.
49 59
IF CURR-DAY = 1 THEN
5 6
SET IND-ON (IND-NEW-MONTH) TO TRUE. .5/
51 61
WRITE DISP-REC FORMAT IS "FORMAT1"
62
INDICATORS ARE INDIC-TABLE. .6/
63
64 READ-AND-PROCESS-SCREEN.
65
52 66
READ DISPFILE FORMAT IS "FORMAT1"
67
INDICATORS ARE INDIC-TABLE. .7/

NOMCOPIA

FECH/CAM
1/22/94
3/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
3/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
3/22/94

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

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
Captulo 8. Archivos Transaccin

163

5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
53 68
IF IND-ON (IND-DAILY) THEN .8/
54 69
CALL "DAILY" USING DEPTNO
7
ELSE
55 71
IF IND-ON (IND-MONTHLY) THEN
56 72
CALL "MONTHLY" USING DEPTNO.
\ \ \ \ \
F I N
D E
F U E N T E \ \
5763CB1 V3RM5
Mensajes AS/4 COBOL
INST
\
23 MSGID: LBL6 GRAVEDAD: 1 NUMSEC: 26
Mensaje . . . . :
No se encontraron campos OUTPUT para formato FORMAT1.
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
1

Registros fuente ledos . . . . . . :


72
Registros de copia ledos . . . . . :
8
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad ms alta emitido:


1
LBL91 Programa XMPLE72 creado en biblioteca XMPLIB.
\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

NOMCOPIA

FECH/CAM

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

.1/

El atributo del rea de indicadores separada, SI, se especifica en la clusula


ASSIGN.

.2/

La instruccin COPY con Formato 2 genera campos en el rea de registros


slo para campos de datos.

.3/

Se define una tabla de 99 tems de datos booleanos en


WORKING-STORAGE. La clusula INDICATOR para esta entrada de descripcin de datos hace que estos tems de datos se asocien con los indicadores 1 a 99 respectivamente. La utilizacin de esta tabla puede tener
como resultado un rendimiento mejorado si se compara con la utilizacin de
un tem de grupo con mltiples entradas subordinadas para indicadores individuales.

.4/

Se define una serie de tems de datos en WORKING-STORAGE para proporcionar nombres de subndices significativos con los que referirse a la tabla de
indicadores. La utilizacin de tales tems de datos no es necesaria.

.5/

Si es el primer da del mes, se activa INDIC-TABLE (01) en el rea de indicadores separada para FORMAT1.

.6/

La frase INDICATOR es necesaria para enviar los valores de los indicadores


a la pantalla de estacin de trabajo.

.7/

La frase INDICATOR es necesaria para recibir valores de los indicadores


desde la pantalla de estacin de trabajo. Si se pulsa F5, se activar
INDIC-TABLE (51).

.8/

Si se ha activado INDIC-TABLE (51), se llama al programa DAILY.

Subarchivos
Pueden especificarse subarchivos en las DDS para un archivo de pantalla que permitan al usuario manejar varios registros del mismo tipo en una pantalla. Consulte
la Figura 61 en la pgina 165 para ver un ejemplo de una pantalla de subarchivo.
Un subarchivo es un grupo de registros que se leen desde un dispositivo de pantalla o se graban a dicho dispositivo. El programa procesa un registro a la vez,

164

COBOL/400 Gua del usuario

pero el sistema operativo y la estacin de trabajo envan y reciben bloques de


registros. Si se transmiten ms registros de los que pueden visualizarse en la pantalla a la vez, el operador de la estacin de trabajo puede pasar de una pgina del
bloque de registros a otra sin devolver el control al programa.
Los registros que se han de incluir en un subarchivo se especifican en las DDS
para el archivo. El nmero de registros que pueden contenerse en un subarchivo
tambin debe especificarse en las DDS. Un archivo puede contener ms de un
subarchivo: sin embargo, en un dispositivo slo pueden estar activos doce subarchivos de forma simultnea. Pueden visualizarse doce subarchivos en un dispositivo a la vez.
Las DDS de un subarchivo constan de dos formatos de registros: un formato de
registros de subarchivos y un formato de registros de control de subarchivos.
El formato de registro de subarchivo contiene las descripciones de campo para los
registros en el subarchivo. Las especificaciones del formato de registro de subarchivo en una operacin READ, WRITE o REWRITE hace que se procese el
registro del subarchivo especificado, pero no afecta directamente a los datos
visualizados.
La especificacin del formato de registro de control del subarchivo en la instruccin
READ o WRITE hace que se realicen las operaciones de lectura fsica, escritura o
configuracin de un subarchivo. La Figura 62 en la pgina 167 muestra un
ejemplo de las DDS para un formato de registro de subarchivo, y la Figura 63 en
la pgina 169 muestra un ejemplo de las DDS para un formato de registro de
control de subarchivo.
Para la descripcin de la visualizacin de los registros en un subarchivo, y para la
descripcin de las palabras clave que pueden especificarse para un subarchivo,
consulte las publicaciones Gua para la Gestin de Datos y DDS Reference.

Bsqueda Nombre Cliente


Cdigo de Bsqueda

_____

Nmero Nombre

Direccin

Ciudad

XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX

XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX

Provincia
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX

Figura 61. Pantalla de Subarchivo

Captulo 8. Archivos Transaccin

165

Para utilizar un subarchivo en un archivo de pantalla de un programa COBOL


deber especificar la frase SUBFILE con la operacin de entrada/salida. Las operaciones vlidas de subarchivo son:
READ SUBFILE nombre-archivo RECORD
WRITE SUBFILE nombre-registro
REWRITE SUBFILE nombre-registro.
Los subarchivos pueden procesarse secuencialmente con la instruccin READ
SUBFILE NEXT MODIFIED, o procesarse al azar especificando un valor de clave
relativa. Una clave relativa es un nmero sin signo que el sistema puede utilizar
directamente para ubicar un registro en un archivo.
El archivo TRANSACTION debe ser un archivo descrito externamente. En
COBOL, todos los accesos al subarchivo se realizan con un nmero de registro
relativo. Si las frases SUBFILE se utilizan con un archivo TRANSACTION, la sentencia SELECT en la Divisin de Entorno debe indicar ACCESS MODE IS
DYNAMIC y debe especificar la clave RELATIVE KEY a utilizar.
Si un archivo de pantalla adquiere ms de un dispositivo de pantalla, habr un
subarchivo separado para cada dispositivo de pantalla individual. Si se cre un
subarchivo para un dispositivo de pantalla particular adquirido por un archivo
TRANSACTION, todas las operaciones de entrada que hacen referencia a un
formato de registro para el subarchivo se realizan sobre el subarchivo que pertenece a dicho dispositivo. Consulte el anlisis de la frase TERMINAL en la pgina
191 de este captulo para saber determinar cul es el dispositivo que se utiliza.
Cualquier operacin que haga referencia al nombre del formato de registro que no
est designado como un subarchivo se procesa como una operacin de
entrada/salida dirigida directamente al dispositivo de pantalla.

Utilizacin de Subarchivos
Algunas utilizaciones tpicas de los subarchivos incluyen:
Utilizacin

Significado

Slo Visualizar
Visualizar con Seleccin

El usuario de la estacin de trabajo revisa la pantalla.


El usuario solicita ms informacin acerca de uno de los tems en
la pantalla.
El usuario modifica uno o ms registros.
Se utiliza un subarchivo para una funcin de entrada de datos.

Modificacin
Slo Entrada (sin comprobacin de
validez)
Slo Entrada (con comprobacin de
validez)
Combinacin de Tareas

166

COBOL/400 Gua del usuario

Se utiliza un subarchivo para una funcin de entrada de datos, y


se comprueban los registros.
Puede utilizarse un subarchivo como visualizacin con modificacin.

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nmero

Signo

Archivo

de hojas por rea

Impreso

U M / 0 5 0 *
en

Espaa

de relleno puede variar ligeramente.

Descripcin

Pgina

de

Instrucciones
de Grabacin

1 0

A *

1 1

1 2

1 3

D D S

A *

1 4

1 5

1 8

1 9

P A R A

AC T U A L

2 0

2 1

2 2

E L
I

2 3

2 4

2 5

2 6

2 7

2 8

2 9

A R C H I VO

Z AC I ON

D E

Tipo
3 0

3 1

3 2

3 3

D E

3 4

3 5

D I

P AGO

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
16

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

S P O S

4 0

4 1

P os

4 2

4 3

4 4

4 5

I VO

I N T E R AC T

4 6

4 7

4 8

D E

I VO

4 9

5 0

5 1

5 2

5 3

5 4

5 5

5 6

5 7

P A N T A L L A

D E

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

P A Y U P D T D

C U E N T A S

P OR

CO B R A R

A *
A

S U B A R C H 1

S F L

T E X T (

'

S U B A R C H

P A R A

P AGO

P AGO '

C L

I E N T E

A *
A

AC P P M T

4 A

A
A

5 1

N 5 1

4 T E X T (

' AC E P T A R

V A L OR E S (

'

D S P A T R ( R

* S

'

MD T

D S P A T R ( ND

'

* NO '

P R )

A *
A

C U S T

1 5 T E X T (

' N UM E R O

5 2

D S P A T R ( R

5 3

D S P A T R ( ND )

5 4

D S P A T R ( P R )

C L

I E N T E

'

P AGA DO '

A *
A

AMP A I D

0 2 B

2 4 T E X T (

'

I MP OR T E

C H E C K ( F E )

A U T O ( R A B )

CMP ( G T

0 )

5 2

D S P A T R ( R

5 3

D S P A T R ( ND )

5 4

D S P A T R ( P R )

A *
A

E C P M S G

3 1 A

3 7 T E X T (

' M E N S A J E

5 2

D S P A T R ( R

5 3

D S P A T R ( ND )

5 4

D S P A T R ( B L

D E

E X C E P C I ON '

A *
A

OV R P M T

8 Y

2 O

7 0 T E X T (

' E X C E S O

E N

E L

P AGO '

D E

E S T ADO '

E D T CD E ( 1 )

5 5

N 5 6

D S P A T R ( B L

D S P A T R ( ND )

A *
A

S T S CD E

1 A

T E X T (

' COD I GO

Figura 62. Especificaciones de Descripcin de Datos para un Formato de Registro de Subarchivo

Las especificaciones de descripcin de datos (DDS) para un formato de registro de


subarchivo describe los registros en un subarchivo:
.1/

La palabra clave SFL identifica el formato de registro como un subarchivo.

.2/

Las entradas de lnea y posicin definen la ubicacin de los campos en la


pantalla.

.3/

La palabra clave VALUES especifica que el usuario slo puede especificar


*YES o *NO como valores para el campo ACPPMT.

.4/

Las entradas de utilizacin definen si el campo denominado debe ser un


campo de salida (O), entrada (I), salida/entrada (B) u oculto (H).

Captulo 8. Archivos Transaccin

167

8 0

.5/

La entrada CHECK(FE) especifica que el usuario no puede saltar al siguiente


campo de entrada sin pulsar una de las teclas de salida de campo.

.6/

La entrada AUTO(RAB) especifica que los datos introducidos en el campo


AMPAID van a ser justificados a la derecha automticamente, y los caracteres iniciales van a rellenarse con espacios en blanco.

.7/

La entrada CMP(GT 0) especifica que los datos introducidos para el campo


AMPAID deben compararse con cero para asegurar que el valor es mayor
que cero.

.8/

La palabra clave EDTCDE especifica la edicin deseada para el campo de


salida OVRPMT. EDTCDE(1) indica que debe imprimirse el campo OVRPMT
con puntos, comas decimales y sin signos. Asimismo, se imprimir un saldo
de cero y se suprimirn los ceros iniciales.

.9/

La palabra clave DSPATR se utiliza para especificar los atributos de pantalla


para el campo nombrado cuando el estado del indicador correspondiente es
cierto. Los atributos especificados son:

168

COBOL/400 Gua del usuario

BL (parpadeo)
RI (contraste invertido)
PR (proteccin)
MDT (establece indicador de datos modificados)
ND (no visualizar)

G X 2 1 - 9 8 9 1 - 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
Inter national

B usiness

Machines

*El

Signo

Archivo

nmero

de

hojas

por

rea

de

Impreso
relleno

Descripcin

puede

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

2 7

2 8

2 9

Tipo
3 0

3 1

3 2

3 3

3 4

3 5

(b/O /I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Datos/Desplazamiento

Teclado

(b/R/H/J/K/S/O)
16

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P o s

4 2

4 3

4 4

CON T R O L 1

4 5

4 6

4 7

4 8

4 9

T E X T (

5 0

S F L C T L

S F L S

5 1

5 2

5 3

5 4

5 5

5 6

5 7

5 8

' CON T R O L

5 9

6 0

6 1

6 2

6 3

6 4

6 5

6 6

6 7

6 8

6 9

S U B A R C H I VO '

7 0

7 1

7 2

7 3

7 4

7 5

7 6

7 7

7 8

7 9

8 0

( S U B A R C H 1 )

Z ( 1 7 )

S F L P AG ( 1 7 )

6 1

S F L C L R

6 2

S F L D S P

6 2

S F L D S P C T L

R E C U B R

B L OQ U E O

I M I E N T O

A *
A

H E L P ( 9 9

'

T E C L A

C A 1 2 ( 9 8

'

C A 1 1 ( 9 7

'

I G NO R A R

I N

D E

D E

A Y U D A '

AC T U A L

Z AC I ON

E N T R AD A '

P AGO '

A *
A

9 9

S F L M S G (

'

F 1 1 -

I G NO R A R
F 1 2

Z AC I ON

D E

P AGO '

E N T R

I N

NO
D E

V A L

I D A +

AC T U A L

I +

A *
A

'

S O L

6 5

'

F E C H A '

7 8 F E C H A

I C I

T U D

6 3

' AC E P T A R

6 3

' P AGO '

1 4

' C L

2 6

' P AGO '

3 7

' M E N S A J E

6 4

P AGO

C L

I E N T E

'

E D T CD E ( Y )

AC T U A L

I E N T E

'

'

D E

E X C E P C I ON '

A
A
A
A
A
A
A
A
A

Figura 63. Especificaciones de Descripcin 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 bsqueda, 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 nmero total de registros a incluir en el subarchivo (17).

.3/

SFLPAG indica el nmero total de registros en una pagina (17).

.4/

SFLCLR indica cundo debe borrarse el subarchivo (cuando el indicador 61


est activo).

.5/

SFLDSP indica cundo se visualiza el subarchivo (cuando el indicador 62


est activo).

.6/

SFLDSPCTL indica cundo se visualiza el registro de control de subarchivo


(cuando el indicador 62 est activo).

Captulo 8. Archivos Transaccin

169

.7/

La palabra clave LOCK impide que el usuario de la estacin de trabajo


utilice el teclado cuando el formato de registro CONTROL1 se visualiza inicialmente.

.8/

HELP permite que el usuario pulse la tecla Ayuda y active el indicador 99.

.9/

SFLMSG identifica la constante como un mensaje que se visualiza si se


activa el indicador 99.

Adems de la informacin de control, el formato de registro de control de subarchivo define las constantes a utilizar como encabezamientos de columna para el
formato de registro de subarchivo. Consulte la Figura 63 en la pgina 169 para
ver un ejemplo de formato de registro de control de subarchivo.

Archivos de Mltiples Dispositivos y Archivos de Dispositivo nico


Un archivo de mltiples dispositivos es un archivo de pantalla o un archivo de
funcin de comunicaciones entre sistemas (ICF). Un archivo de mltiples dispositivos puede adquirir ms de un dispositivo de programa. Para obtener un ejemplo
de la utilizacin de archivos de mltiples dispositivos, consulte la Figura 64 en la
pgina 172.
Un archivo de dispositivo nico es un archivo de dispositivo creado con un slo
dispositivo de programa definido para l. Los archivos de impresora, de diskette y
de cinta son archivos de dispositivo nico. Los archivos de pantalla y los archivos
de funcin de comunicaciones entre sistemas (ICF) creados con un nmero
mximo de un dispositivo de programa tambin son archivos de dispositivo nico.
Un archivo de pantalla puede tener mltiples dispositivos de programa cuando el
parmetro MAXDEV del mandato CRTDSPF es mayor que 1. Si se especifica
*NONE para el parmetro DEV de este mandato, se debe suministrar el nombre de
un dispositivo de pantalla antes de utilizar cualquier campo relacionado con el
archivo.
Para ms informacin acerca de la creacin y utilizacin de un archivo de pantalla,
consulte la publicacin Gua para la Gestin de Datos.
Los archivos ICF pueden tener dispositivos mltiples de programa cuando el parmetro MAXPGMDEV del mandato CRTICFF sea mayor que 1. Para ms informacin acerca de la creacin y utilizacin de archivos ICF, consulte la ICF
Programmers Guide.
COBOL determina en tiempo de ejecucin si un archivo es un archivo de dispositivo nico o un archivo de mltiples dispositivos, basndose en si el archivo es
capaz de tener varios dispositivos. El nmero real de dispositivos adquiridos no
afecta a si un archivo se considera de nico dispositivo o de mltiples dispositivos.
Si un archivo es un archivo de dispositivo nico o mltiple no se determina en
tiempo de compilacin; esta determinacin se basa en la descripcin actual de la
pantalla o del archivo ICF.
Para archivos de mltiples dispositivos, si se ha de utilizar un dispositivo de programa particular en una instruccin de E/S, tal dispositivo se especifica mediante la
frase TERMINAL. La frase TERMINAL tambin puede especificarse para un
archivo de dispositivo nico.

170

COBOL/400 Gua del usuario

Las pginas siguientes contienen un ejemplo que ilustra la utilizacin de archivos


de mltiples dispositivos. El programa utiliza un archivo de pantalla y est
pensado para ejecutarse en modo de proceso por lotes. El programa adquiere
terminales e invita a esos terminales mediante una pantalla de inicio de sesin.
Despus de invitar a los terminales, stos se sondean. Si nadie inicia la sesin
antes de que el tiempo de espera expire, el programa finaliza. Si se entra una
contrasea vlida, el usuario est autorizado a actualizar un archivo de empleados
llamando a otro programa COBOL. Una vez completada la actualizacin, se invita
al dispositivo de nuevo y los terminales se sondean otra vez.

Captulo 8. Archivos Transaccin

171

GX21-9891-0 UM/050*

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 ATO S
International Business Machines

de Grabacin

10

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

Indicador

No (N)
11

Referencia (R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

Longitud

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

Nom bre

Descripcin

Pgina

de

Tecla

D ecimales

And/Or/Com ent. (A/O/*)

Nombre Condicin

Indicador

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

Impreso en Espaa

*El nm ero de hojas por rea de re lleno puede variar lige ram ente.

37

38

Ubicacin

Funciones

Lnea

39

40

41

Pos

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

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

S I GNON

I NV I T E
/ b
/ /b /b /b /b /b /b/b/b/b/b/b/b/ b/ b/ b/ b/ b
/b
/ '
/ ' b
20

DSPATR ( R I )
/ ' b
20
/b
/ '

DSPATR ( R I )
/b
/ '
38 ' b

DSPATR ( R I )
/ ' b
/b
/ '
20

27 'M

DSPATR ( H I
/b
/ '
38 ' b

DSPATR ( R I )
/ ' b
20
/b
/ '

/
2 0

A
A
A
A
A
E
l formato SIGNON tiene
A

la palabra clave INVITE


A

DSPATR ( R I )

Aia d a . A s, si se u tiliza
asoc

e l f oAr m a t o S I G N O N e n u n a
A

s e n tAe n c i a W R I T E , s e i n v i t a r
a l dA
ispositivo en el que se
e s t A e s c r i b i e n d o .

F '

A
A
A
A

38 ' b
/b
/ '
DSPATR ( R I )
/ ' /b /b /b /b/b/b/b/b/b/b/ b/ b/ b/ b/ b/ b
/b
/b
/ b
/ b
/ '
20
DSPATR ( R I )
/ ' I N I C I E L A
2 0

S E S I ON '

DSPATR ( H I )

P A S S WO R D

WR ONG

1 /0 A
2 /0 A

20
/

4 3D S P A T R ( PC

2 1

4 3

ND )

UPDA T E

A
A

5 ' AC T U A L I Z AC I ON

A R C H I VO

5 ' T ECL E E
A

N UM
R

7A

N UM

7A

N UME R O

E MP L E ADO

AC T U A L I Z A R '

4 4D S PA T R ( R I

PC )

5 ' N UME R O

E MP L E ADO '

2 5D S PA T R ( PC )

2 5D S PA T R ( PC )

5 ' D I R E CC I ON

5 ' CA L L E '

N AM E

S TRE E T

3 /0 A

3 /0 A

A
A

A P T NO

5A

A
A

C I T Y

2 /0 A

P R OV

2 /0 A

A
A
R

1 1

1 1

13

13

15

15

5 ' N OM B R E

E MP L E ADO '
E MP L E ADO '

2 5D S PA T R ( PC )
5 ' N UME R O

A P A R T AM E N T O '

2 5 ' D S PA T R ( PC )
5 ' C I U D AD '
2 5D S PA T R ( PC )
5 ' P R OV I NC I A '
2 5D S PA T R ( PC )

R E CO V E R Y

A
A

5 ' E L
D ADO

N UME R O
NO

E S

DE

E MP L E ADO

QU E

VA L I DO '

5 ' T ECL E E

P AR A

R E I N T E N T AR '

8
/
10

5 ' T ECL E E

P AR A

SAL I R '

P E R S ON A L '

E MP L O Y E E

AN SWE R

1X

5D S PA T R ( R I

PC )

V A L OR E S ( ' S '

' N ' )

A
A
A
A
A
A

Figura 64 (Parte 1 de 3). Ejemplo de Utilizacin de Archivos de Mltiples Dispositivos

172

DE

DSPATR ( B L )

B L )

DSPATR ( R I )

COBOL/400 Gua del usuario

HA

80

G X2 1-98 91-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
International Business Machines

U M /05 0*

Impreso en Espaa

*El nm e ro de hojas por rea de re lleno puede variar lige ram ente .

Archivo

Signo

Instrucciones

Descripcin

Pgina

de

de Grabacin

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

Tipo Datos/Desp lazamien to Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

N om b re

3 0

3 1

32

3 3

34

3 5

36

Utilizacin (b/O/I/B/H/M/N/P)

Nombre Co ndicin

D ecimales

And/Or/Coment. (A/O/*)

Tipo de Formula rio

Secuencia

No (N)

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

37

38

Ubicacin

Funciones

Lnea

39

4 0

4 1

Pos

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

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
A

U N I QU E
R

P A S S WO R D S

P A S S K E Y

/
1 0

P A S S WO R D

1 0

P A S S K E Y

A
A
A
A
A
A
A
A
A
A
A
A

Figura 64 (Parte 2 de 3). Ejemplo de Utilizacin de Archivos de Mltiples Dispositivos

Captulo 8. Archivos Transaccin

173

80

G X 2 1 -9 8 9 1 -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
International Business

Machines

U M /0 5 0 *

Impreso en Espaa

*El nmero de hojas por rea de relleno puede variar ligeramente.

Archivo

Signo

Instrucciones

Descripcin

Pgina

de

de Grabacin

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

Ubicacin

(b/O/I/B/H/M/N/P)
Posiciones

Referencia (R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

No (N)

Indicador

No (N)

Indicador

Indicador

Longitud

3 6

Utilizacin

Nom bre

D ecimales

And/Or/Com ent. (A/O/*)

Nombre Condicin

No (N)

Secuencia

Tipo de Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Tipo Datos/Desplazamiento Teclado

Programador

37

3 8

Funciones

Lnea

39

4 0

4 1

Pos

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

A *
A *

DD S

P A R A

A *

QU E

CON T I E N E

E L

T E R M I NO
L A

D E

I S T A

A R C H I VO
D E

F I S I CO

T E R M I NA L E S

A *
A
A

T E R M
T E R M

/
1 0

A
A
A
A
A
A
A
A
A
A
A
A
A
A

Figura 64 (Parte 3 de 3). Ejemplo de Utilizacin de Archivos de Mltiples Dispositivos

174

COBOL/400 Gua del usuario

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

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPMDF
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
SAMPMDF.
3 3
AUTHOR.
PROGRAMMER NAME.
4
5\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
6\ EL SIGUIENTE PROGRAMA MUESTRA ALGUNAS FUNCIONES DISPONIBLES\
7\ CON EL SOPORTE DEL ARCHIVO DE MLTIPLES DISPOSITIVOS.
\
8\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
9
4 1
INSTALLATION. COBOL DEVELOPMENT CENTRE.
5 11
DATE-WRITTEN. 2/2/87.
6 12
DATE-COMPILED. 3/31/94 13:58:5
.
7 13 ENVIRONMENT DIVISION.
8 14 CONFIGURATION SECTION.
9 15 SOURCE-COMPUTER. IBM-AS4.
1 16 OBJECT-COMPUTER. IBM-AS4.
11 17 SPECIAL-NAMES. ATTRIBUTE-DATA IS ATTR. .1/
12 18 INPUT-OUTPUT SECTION.
13 19 FILE-CONTROL.
14 2
SELECT MULTIPLE-FILE
15 21
ASSIGN TO WORKSTATION-MULT
16 22
ORGANIZATION IS TRANSACTION .2/
17 23
ACCESS MODE IS SEQUENTIAL
18 24
FILE STATUS IS MULTIPLE-FS1, MULTIPLE-FS2 .3/
19 25
CONTROL-AREA IS MULTIPLE-CONTROL-AREA.
26
.4/
2 27
SELECT TERMINAL-FILE
21 28
ASSIGN TO DATABASE-TERM
22 29
ORGANIZATION IS SEQUENTIAL
23 3
ACCESS IS SEQUENTIAL
24 31
FILE STATUS IS TERMINAL-FS1.
32
25 33
SELECT PASSWORD-FILE
26 34
ASSIGN TO DATABASE-PASSWORD
27 35
ORGANIZATION IS INDEXED
28 36
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
29 37
ACCESS MODE IS RANDOM
3 38
FILE STATUS IS PASSWORD-FS1.
39
31 4
SELECT PRINTER-FILE
32 41
ASSIGN TO PRINTER-QPRINT.
33 42 DATA DIVISION.
34 43 FILE SECTION.
35 44 FD MULTIPLE-FILE.
36 45 1 MULTIPLE-REC. COPY DDS-SIGNON OF MULT. .5/
37 +1
5 MULT-RECORD PIC X(2).
+2\ FORMATO ENTRADA:SIGNON
DESDE ARCH MULT
DE BIBLIOTECA TESTER
+3\
38 +4
5 SIGNON-I
REDEFINES MULT-RECORD.
39 +5
6 PASSWORD
PIC X(1). .6/
+6\ FORMATO SALIDA:SIGNON
DESDE ARCH MULT
DE BIBLIOTECA TESTER
+7\
4 +8
5 SIGNON-O
REDEFINES MULT-RECORD.
41 +9
6 WRONG
PIC X(2).
46
42 47 FD TERMINAL-FILE.
43 48 1 TERMINAL-REC. COPY DDS-ALL-FORMATS OF TERM.
44 +1
5 TERM-RECORD PIC X(1).
+2\
FORMATO E-S:TERM DESDE ARCHIVO TERM
DE BIBLIOTECA TESTER
+3\
45 +4
5 TERM
REDEFINES TERM-RECORD.
46 +5
6 TERM
PIC X(1).
49
47 5 FD PASSWORD-FILE.
48 51 1 PASSWORD-REC. COPY DDS-ALL-FORMATS OF PASSWORD.
49 +1
5 PASSWORD-RECORD PIC X(2).
+2\
FORMATO E-S:PASSWORDS
DESDE ARCHIVO PASSWORD
DE BIBLO TESTER
+3\
+4\ DEFINICIONES CLAVE PARA FORMATO DE REGISTRO PASSWORDS
+5\ NMERO
NOMBRE
RECUPERACIN
TIPO ALTSEQ
+6\
1
PASSKEY
ASCENDING
AN
NO
5 +7
5 PASSWORDS
REDEFINES PASSWORD-RECORD.
51 +8
6 PASSKEY
PIC X(1).
52 +9
6 PASSWORD
PIC X(1).
52

AS4SYS 3/31/94 13:58:5


NOMCOPIA
FECH/CAM

Pgina

SIGNON
SIGNON
SIGNON
SIGNON
SIGNON
SIGNON
SIGNON
SIGNON
SIGNON

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 65 (Parte 1 de 4). Listado Fuente COBOL para el Soporte de Archivos de Mltiples Dispositivos

Captulo 8. Archivos Transaccin

175

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPMDF
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
53 53 FD PRINTER-FILE.
54 54 1 PRINTER-REC.
55 55
5 PRINTER-RECORD
PIC X(132).
56
56 57 WORKING-STORAGE SECTION.
58
59\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
6\
DECLARAR EL ESTADO DE ARCHIVO PARA CADA ARCHIVO
\
61\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
62
57 63 1 MULTIPLE-FS1
PIC X(2)
VALUE SPACES.
58 64 1 MULTIPLE-FS2. .7/
59 65
5 MULTIPLE-MAJOR
PIC X(2)
VALUE SPACES.
6 66
5 MULTIPLE-MINOR
PIC X(2)
VALUE SPACES.
61 67 1 TERMINAL-FS1
PIC X(2)
VALUE SPACES.
62 68 1 PASSWORD-FS1
PIC X(2)
VALUE SPACES.
69
7\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
71\ DECLARAR ESTRUCTURA PARA ATRIBUTOS DE ARCHIVO DE MANTENIM. \
72\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
73
63 74 1 STATION-ATTR.
64 75
5 STATION-TYPE
PIC X(1). .8/
65 76
5 STATION-SIZE
PIC X(1).
66 77
5 STATION-LOC
PIC X(1).
67 78
5 FILLER
PIC X(1).
68 79
5 STATION-ACQUIRE
PIC X(1).
69 8
5 STATION-INVITE
PIC X(1).
7 81
5 STATION-DATA
PIC X(1).
71 82
5 STATION-STATUS
PIC X(1).
72 83
5 STATION-DISPLAY
PIC X(1).
73 84
5 STATION-KEYBOARD
PIC X(1).
74 85
5 STATION-SIGNON
PIC X(1).
75 86
5 FILLER
PIC X(5).
87
88\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
89\
DECLARAR REA DE CONTROL PARA VARIOS ARCHIVOS
\
9\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
91
76 92 1 MULTIPLE-CONTROL-AREA.
77 93
5 MULTIPLE-KEY-FEEDBACK PIC X(2)
VALUE SPACES.
78 94
5 MULTIPLE-DEVICE-NAME PIC X(1)
VALUE SPACES.
79 95
5 MULTIPLE-FORMAT-NAME PIC X(1)
VALUE SPACES.
96
97\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
98\
DECLARAR VARIABLES DE INFORME DE ERROR
\
99\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
1
8 11 1 HEADER-LINE.
81 12
5 FILLER
PIC X(6)
VALUE SPACES.
82 13
5 FILLER
PIC X(72)
83 14
VALUE "MDF ERROR REPORT".
84 15 1 DETAIL-LINE.
85 16
5 FILLER
PIC X(15)
VALUE SPACES.
86 17
5 DESCRIPTION
PIC X(25)
VALUE SPACES.
87 18
5 DETAIL-VALUE
PIC X(92)
VALUE SPACES.
19
11\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
111\ DECLARAR CONTADORES, DISTINTIVOS Y VARIABLES DE ALMACENAM.\
112\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
113
88 114 1 CURRENT-TERMINAL
PIC X(1)
VALUE SPACES.
89 115 1 TERMINAL-ARRAY.
9 116
5 LIST-OF-TERMINALS OCCURS 25 TIMES.
91 117
7 DEVICE-NAME
PIC X(1).
92 118 1 COUNTER
PIC 9(3)
VALUE IS 1.
93 119 1 NO-OF-TERMINALS
PIC 9(3)
VALUE IS 1.
94 12 1 TERMINAL-LIST-FLAG
PIC 1.
95 121
88 END-OF-TERMINAL-LIST
VALUE IS B"1".
96 122
88 NOT-END-OF-TERMINAL-LIST
VALUE IS B"".
97 123 1 NO-DATA-FLAG
PIC 1.
98 124
88 NO-DATA-AVAILABLE
VALUE IS B"1".
99 125
88 DATA-AVAILABLE
VALUE IS B"".
126

AS4SYS 3/31/94 13:58:5


NOMCOPIA
FECH/CAM

Pgina

Figura 65 (Parte 2 de 4). Listado Fuente COBOL para el Soporte de Archivos de Mltiples Dispositivos

176

COBOL/400 Gua del usuario

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPMDF
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 127 PROCEDURE DIVISION.
128
129 DECLARATIVES.
13
131 MULTIPLE-SECTION SECTION.
132
USE AFTER STANDARD EXCEPTION PROCEDURE ON MULTIPLE-FILE.
133
134 MULTIPLE-PARAGRAPH.
11 135
WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE.
12 136
MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE.
13 137
MOVE "MULTIPLE FILE" TO DETAIL-VALUE OF DETAIL-LINE.
14 138
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES.
15 139
MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE.
16 14
MOVE MULTIPLE-FS1 TO DETAIL-VALUE OF DETAIL-LINE.
17 141
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
18 142
MOVE "EXTENDED STATUS IS:" TO DESCRIPTION OF DETAIL-LINE. .9/
19 143
MOVE MULTIPLE-FS2 TO DETAIL-VALUE OF DETAIL-LINE.
11 144
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
111 145
ACCEPT STATION-ATTR FROM ATTR. .9A/
112 146
MOVE "FILE ATTRIBUTES ARE:" TO DESCRIPTION OF DETAIL-LINE.
113 147
MOVE STATION-ATTR TO DETAIL-VALUE OF DETAIL-LINE.
114 148
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
115 149
STOP RUN.
15
151 TERMINAL-SECTION SECTION.
152
USE AFTER STANDARD EXCEPTION PROCEDURE ON TERMINAL-FILE.
153 TERMINAL-PARAGRAPH.
116 154
WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE.
117 155
MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE.
118 156
MOVE "TERMINAL FILE" TO DETAIL-VALUE OF DETAIL-LINE.
119 157
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES.
12 158
MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE.
121 159
MOVE TERMINAL-FS1 TO DETAIL-VALUE OF DETAIL-LINE.
122 16
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
123 161
STOP RUN.
162
163 PASSWORD-SECTION SECTION.
164
USE AFTER STANDARD EXCEPTION PROCEDURE ON PASSWORD-FILE.
165 PASSWORD-PARAGRAPH.
124 166
WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE.
125 167
MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE.
126 168
MOVE "PASSWORD FILE" TO DETAIL-VALUE OF DETAIL-LINE.
127 169
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES.
128 17
MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE.
129 171
MOVE PASSWORD-FS1 TO DETAIL-VALUE OF DETAIL-LINE.
13 172
WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
131 173
STOP RUN.
174
175 END DECLARATIVES.
176
177\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
178\
LGICA DE PROGRAMA PRINCIPAL EMPIEZA AQU
\
179\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
18
181 MAIN-LINE SECTION.
182 MAIN-LINE-PARAGRAPH.
132 183
OPEN I-O
MULTIPLE-FILE .1/
184
INPUT TERMINAL-FILE
185
I-O
PASSWORD-FILE
186
OUTPUT PRINTER-FILE.
187
133 188
MOVE 1 TO COUNTER.
134 189
SET NOT-END-OF-TERMINAL-LIST TO TRUE.
19
PERFORM
135 191
FILL-TERMINAL-LIST UNTIL END-OF-TERMINAL-LIST.
192
PERFORM
136 193
ACQUIRE-AND-INVITE-TERMINALS
194
VARYING COUNTER FROM 1 BY 1
195
UNTIL COUNTER GREATER THAN NO-OF-TERMINALS.
137 196
MOVE 1 TO COUNTER.
138 197
SET DATA-AVAILABLE TO TRUE.
198
PERFORM
139 199
POLL-TERMINALS UNTIL NO-DATA-AVAILABLE.
2
PERFORM
14 21
DROP-TERMINALS
22
VARYING COUNTER FROM 1 BY 1
23
UNTIL COUNTER GREATER THAN NO-OF-TERMINALS.

AS4SYS 3/31/94 13:58:5


NOMCOPIA
FECH/CAM

Pgina

Figura 65 (Parte 3 de 4). Listado Fuente COBOL para el Soporte de Archivos de Mltiples Dispositivos

Captulo 8. Archivos Transaccin

177

5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/SAMPMDF
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
141 24
CLOSE
MULTIPLE-FILE
25
TERMINAL-FILE
26
PASSWORD-FILE
27
PRINTER-FILE.
142 28
STOP RUN.
29
21\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
211\
PROCEDIMIENTOS
\
212\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
213
214 PROCEDURE-SECTION SECTION.
215 FILL-TERMINAL-LIST.
143 216
READ TERMINAL-FILE RECORD INTO LIST-OF-TERMINALS(COUNTER)
217
AT END
144 218
SET END-OF-TERMINAL-LIST TO TRUE
145 219
SUBTRACT 1 FROM COUNTER
146 22
MOVE COUNTER TO NO-OF-TERMINALS.
147 221
ADD 1 TO COUNTER.
222
223 ACQUIRE-AND-INVITE-TERMINALS.
148 224
ACQUIRE LIST-OF-TERMINALS(COUNTER) FOR MULTIPLE-FILE. .11/
149 225
WRITE MULTIPLE-REC .12/
226
FORMAT IS "SIGNON"
227
TERMINAL IS LIST-OF-TERMINALS(COUNTER).
228
229 POLL-TERMINALS.
15 23
READ MULTIPLE-FILE RECORD. .13/
151 231
IF MULTIPLE-FS2 EQUAL "31" THEN
152 232
SET NO-DATA-AVAILABLE TO TRUE. .14/
153 233
IF DATA-AVAILABLE THEN
154 234
MOVE MULTIPLE-DEVICE-NAME TO CURRENT-TERMINAL
155 235
PERFORM PASSWORD-VALIDATION. .15/
236
237 PASSWORD-VALIDATION.
156 238
MOVE CURRENT-TERMINAL TO PASSKEY OF PASSWORD-REC.
157 239
READ PASSWORD-FILE RECORD.
158 24
IF PASSWORD OF SIGNON-I EQUAL PASSWORD OF PASSWORD-REC THEN
159 241
CALL "UPDT" USING CURRENT-TERMINAL
16 242
MOVE SPACES TO WRONG OF SIGNON-O
243
ELSE
161 244
MOVE "INVALID PASSWORD" TO WRONG OF SIGNON-O.
162 245
WRITE MULTIPLE-REC
246
FORMAT IS "SIGNON"
247
TERMINAL IS CURRENT-TERMINAL.
248
249 DROP-TERMINALS.
163 25
DROP LIST-OF-TERMINALS(COUNTER) FROM MULTIPLE-FILE. .16/
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

AS4SYS 3/31/94 13:58:5


NOMCOPIA
FECH/CAM

Pgina

Figura 65 (Parte 4 de 4). Listado Fuente COBOL para el Soporte de Archivos de Mltiples Dispositivos

Atributos del Archivo de Dispositivo

178

.1/

ATTR es el nombre mnemotcnico asociado con el nombre de funcin


ATTRIBUTE-DATA. ATTR se utiliza en la instruccin ACCEPT para obtener
los datos de atributos para el archivo TRANSACTION, llamado
MULTIPLE-FILE. Vea el tem .9A/.

.2/

El archivo MULT debe haberse creado utilizando el mandato CRTDSPF,


donde el parmetro DEV tiene el valor *NONE y el parmetro MAXDEV tiene
un valor mayor que 1. El parmetro WAITRCD especifica el tiempo de
espera para las operaciones READ del archivo. El parmetro WAITRCD
debe tener un valor mayor que 0.

.3/

MULTIPLE-FS2 es el estado del archivo ampliado para el archivo


TRANSACTION, llamado MULTIPLE-FILE. Esta variable se declar en la
seccin WORKING-STORAGE del programa. Vea el tem .7/.

.4/

MULTIPLE-CONTROL-AREA es el rea de control para el archivo


TRANSACTION, llamado MULTIPLE-FILE. Esta variable se utiliza para
determinar qu dispositivo de programa se ha utilizado para iniciar la sesin.
Vea el tem .15/.

COBOL/400 Gua del usuario

.5/

La descripcin de datos para MULTIPLE-REC se ha definido utilizando la instruccin COPY DDS.


Nota: Slo se nombran los campos que se copian. Consulte las DDS de
este ejemplo para comentarios acerca de las DDS utilizadas.

.6/

El formato SIGNON es el formato con la palabra clave INVITE. Este es el


formato que se utilizar para invitar a los dispositivos mediante la instruccin
WRITE.

.7/

Esta es la declaracin para el estado del archivo ampliado MULTIPLE-FS2.


Es un campo de 4 bytes que se subdivide en un cdigo de retorno principal
(los 2 primeros bytes) y un cdigo de retorno secundario (los 2 ltimos bytes).

.8/

STATION-ATTR es el lugar en el que la instruccin ACCEPT contiene los


datos del atributo para el archivo TRANSACTION, llamado MULTIPLE-FILE.
Vea el tem .9A/.

.9/

En esta instruccin, est grabndose el estado de archivo ampliado


MULTIPLE-FS2.

.9A/ Este es un ejemplo de aceptacin de datos de atributo para el archivo


TRANSACTION, llamado MULTIPLE-FILE. Dado que no interesa un dispositivo de programa especfico, sino ms bien el ltimo dispositivo de programa
utilizado, las frases FOR no se utilizan con la instruccin ACCEPT.
.1/ Esta instruccin abre el archivo TRANSACTION llamado MULTIPLE-FILE.
Dado que el parmetro ACQPGMDEV del mandato CRTDSPF tiene el valor
*NONE, no se adquiere implcitamente ningn dispositivo de programa
cuando se abre el archivo.
.11/ Esta instruccin adquiere el dispositivo de programa contenido en la variable
LIST-OF-TERMINALS (COUNTER), para el archivo TRANSACTION, llamado
MULTIPLE-FILE.
.12/ Esta instruccin WRITE invita al dispositivo de programa especificado en la
frase TERMINAL. El formato SIGNON tiene la palabra clave DDS INVITE
asociada con l. Consulte el tem .13/.
.13/ Esta instruccin READ leer desde cualquier dispositivo de programa invitado. Vea el tem .12/. Si el tiempo de espera expira antes de que alguien
introduzca datos en los dispositivos invitados, el estado ampliado del archivo
se colocar en 0310 y el proceso continuar. Vea el tem .14/.
.14/ En esta instruccin, el estado ampliado del archivo para MULTIPLE-FILE est
comprobndose para ver si ha expirado el tiempo de espera.
.15/ El nombre del dispositivo de programa almacenado en el rea de control se
utiliza para determinar qu dispositivo de programa se utiliz para iniciar la
sesin. Vea el tem .4/.
.16/ Esta instruccin DROP libera el dispositivo de programa contenido en la
variable LIST-OF-TERMINALS del archivo TRANSACTION, llamado
MULTIPLE-FILE.

Captulo 8. Archivos Transaccin

179

Divisin de Entorno
Entrada de Control de Archivo
El archivo TRANSACTION debe designarse mediante una entrada de control de
archivo en el prrafo FILE-CONTROL. Esta entrada tambin especifica otra informacin relacionada con el archivo.
Formato

\\\\\\\\\\\\\\\\\\\\\\\\\

\ \

\
\

\\6\\\\\\\\\\\\\\\\\\\\\

55SELECTnomb-archASSIGNnomb-asignacin-15

TO
literal-1

5TRANSACTION5

ORGANIZATION

IS

55

ACCESSSEQUENTIAL

MODE IS DYNAMICRELATIVEnomb-fech-3

KEY IS

55

STATUSnomb-fech-1

FILE
IS
nomb-fech-5

5.5%

CONTROL-AREAnomb-fech-6

IS

180

COBOL/400 Gua del usuario

Clusula ASSIGN
La clusula ASSIGN asocia el archivo TRANSACTION con un archivo de pantalla
o un archivo ICF mediante la utilizacin de nombre de asignacin-1.
El nombre de asignacin-1 tiene la estructura siguiente:
Formato
55ASSIGNWORKSTATION -nomb-arch5%
TO
SI

El dispositivo especifica el tipo de dispositivo asociado con el archivo. El valor


debe ser WORKSTATION.
El nombre de archivo de AS/400 es un nombre externo de uno a diez caracteres
de un archivo de pantalla o un archivo ICF especificado en los mandatos de crear
archivo de dispositivo, CRTDSPF o CRTICFF.
El atributo -SI se utiliza para especificar la opcin a nivel de archivo para un rea
de indicadores separada. Consulte el apartado Utilizacin de Indicadores con
Archivos Transaction en la pgina 149 para ms detalles.
El segundo y siguientes nombres de asignacin se comprueban sintcticamente,
pero se tratan como documentacin.

Clusula ORGANIZATION
La clusula ORGANIZATION especifica la estructura lgica de un archivo. La
organizacin TRANSACTION significa una interaccin entre el programa y un
usuario de estacin de trabajo u otro sistema.

Organizacin TRANSACTION: El proceso TRANSACTION se define como la


llegada al azar de un registro desde una de las mltiples fuentes posibles mediante
el proceso apropiado, y finalmente, mediante la salida de los resultados o la informacin de realimentacin de algn tipo al fuente del registro.
En algunos casos, todos los registros son homogneos; es decir, una transaccin
lgica se completa con un intercambio de registros. En otras situaciones, una
serie de registros se transfiere hacia atrs y hacia adelante en progresin lgica
con varios tipos de registro seleccionados por el iniciador o como parte del proceso
basndose en los valores de datos de entrada.
Cada transaccin puede procesarse mediante un programa distinto, o varias transacciones pueden procesarse mediante el mismo programa, segn el entorno del
sistema.
La iniciacin de una transaccin puede provocar que se planifique un programa
para procesar la transaccin.
Una transaccin puede consistir en una serie de peticiones y respuestas alternativas (un dilogo). Cada peticin y respuesta puede consistir en varios registros
lgicos.
Captulo 8. Archivos Transaccin

181

Clusula ACCESS MODE


Para archivos con organizacin TRANSACTION, la modalidad de acceso puede
ser SEQUENTIAL o DYNAMIC.
Nota: El proceso dinmico es un mtodo de lectura o grabacin a un archivo en
orden no secuencial y de lectura desde un archivo en orden secuencial con
la misma instruccin OPEN.
Cuando se especifica o implica ACCESS IS SEQUENTIAL, el nombre del formato
contenido en el campo de nombre de formato del rea de control especifica a qu
registro se ha accedido. Cuando se especifica ACCESS IS SEQUENTIAL para un
archivo TRANSACTION, no especifique el tem de datos RELATIVE KEY.
Cuando se especifique ACCESS IS DYNAMIC, los registros del archivo pueden
tener acceso secuencial o al azar, segn la forma de la peticin de entrada/salida
especfica. El acceso al azar a un archivo TRANSACTION slo es vlido si se
realiza el proceso del subarchivo. Para el proceso del subarchivo, deber especificar ACCESS IS DYNAMIC.

Clusula RELATIVE KEY


La clusula RELATIVE KEY especifica el nmero relativo de registro para un
registro especfico de un subarchivo. El tem de datos RELATIVE KEY, nombre de
datos 3, debe definirse como entero sin signo y no puede ser escalado. Asimismo,
el tem de datos no debe definirse en una entrada de descripcin de registros asociada con el archivo TRANSACTION.

Clusula FILE STATUS


El nombre de datos 5 identifica el tem de datos del estado ampliado del archivo,
que contiene cdigos de retorno principal y secundario. Estos cdigos de retorno
principal y secundario pueden, en algunos casos, indicar errores de E/S cuando no
lo hace el cdigo de estado del archivo. Una vez se realiza la operacin de E/S en
un archivo no abierto, el estado ampliado del archivo tendr un valor de cero.
Para ms informacin acerca de la clusula FILE STATUS, consulte el el apartado
Estado de Archivos y reas de Realimentacin en la pgina 108. Las consideraciones generales acerca de la clusula FILE STATUS y el nombre de datos 1 se
describen en la segunda parte del manual COBOL/400 Reference, en la seccin
Clusula FILE STATUS.
Para informacin acerca del papel que desempea el estado del archivo en el
manejo de errores, consulte el Captulo 6, Manejo de Errores y Excepciones
COBOL/400 en la pgina 71.
El nombre de datos 5 debe estar definido en la Divisin de Datos como un tem de
datos alfanumricos de 4 bytes; no debe estar definido en la Seccin de Archivos.
Los dos primeros bytes del tem de datos del estado del archivo ampliado contienen el cdigo de retorno principal, y los dos bytes siguientes contienen el cdigo
retorno secundario. Los cdigos de retorno se mueven al nombre de datos 5
despus de cada operacin de entrada o salida (excepto la instruccin ACCEPT o
CLOSE) del archivo TRANSACTION. Los valores colocados en el nombre de
datos 5 tambin puede tener acceso mediante la instruccin ACCEPT utilizando el
nombre de funcin I-O-FEEDBACK. Para ms informacin acerca de los cdigos
de retorno principal y secundario, consulte las publicaciones Gua para la Gestin
de Datos y ICF Programmers Guide.

182

COBOL/400 Gua del usuario

Clusula CONTROL-AREA
La clusula CONTROL-AREA especifica la informacin que depende del dispositivo
y del sistema y que se utiliza para controlar las operaciones de entrada/salida para
archivos TRANSACTION.
El nombre de datos 6 es un tem de datos CONTROL-AREA que debe definirse en
LINKAGE SECTION o WORKING-STORAGE SECTION. Se asume que el nmero
de datos 6 tiene el formato siguiente:
01

nombre datos 6.
02 tecla-funcin PIC X(2).
(Campo de realimentacin de tecla de funcin).
02 nombre-dispositivo PIC X(10).
(Nombre de dispositivo de programa).
02 formato-registro PIC X(10).
(Formato de registro)

El nombre de datos 6 debe tener una longitud de 2, 12 22 caracteres.


Basndose en la longitud del nombre de datos 6, el compilador asume la disponibilidad de los bytes de realimentacin de tecla, el nombre del dispositivo de programa y el formato de registro.
Nota acerca de la Programacin: Para un archivo ICF, el nombre real de un
dispositivo debe ser diferente del nombre de dispositivo de programa
(nombre de datos 11).
La informacin se mueve al nombre de datos 6 para cada operacin READ desde
un archivo que se asign al tipo de dispositivo WORKSTATION. La informacin
slo es vlida si la operacin READ se completa satisfactoriamente (siempre que
no haya expirado el tiempo de espera). La informacin se encuentra en el formato
fijo tal como se muestra en el ejemplo siguiente:
FILE-CONTROL.
SELECT SCREEN-FILE
ASSIGN TO WORKSTATION-MYFMTS
ORGANIZATION IS TRANSACTION
CONTROL-AREA IS
TRANSACTION-CONTROL-AREA.

..
.

WORKING-STORAGE SECTION.
1 TRANSACTION-CONTROL-AREA.
\
TEM DE REALIMENTACIN
2 FUNCTION-KEY PIC XX.
2 TERMINAL-ID
PIC X(1).
2 FORMAT-NAME
PIC X(1).

Captulo 8. Archivos Transaccin

183

Cada campo en el tem de datos TRANSACTION-CONTROL-AREA del ejemplo se


describe de la forma siguiente:
FUNCTION-KEY: Un nmero de dos dgitos insertado en el campo por la
interfaz de la estacin de trabajo que identifica la tecla de funcin pulsada por
el operador para iniciar la transaccin. Los cdigos son los siguientes:
00
01-24
90
91
92
93
94
95
99

Tecla Intro
Teclas de funcin 1 a 24
Tecla de Giro Arriba
Tecla de Giro Abajo
Tecla Impr
Tecla Ayuda
Tecla Borra
Tecla Inicio
No definido

Cualquier tecla de funcin para la que se precisa informacin de realimentacin debe definirse para el archivo de pantalla utilizando las DDS.
TERMINAL-ID: El nombre de dispositivo del programa
FORMAT-NAME: El nombre de formato de registro de las DDS que se ha referenciado, mediante la ltima instruccin de E/S ejecutada.

Divisin de Datos
Entrada de Descripcin de Archivos
Una entrada de descripcin de archivos consta de un indicador de nivel (FD), un
nombre de archivo y una serie de clusulas independientes. Para un archivo
TRANSACTION, las clusulas independientes permitidas son la clusula RECORD
CONTAINS, la clusula LABEL RECORDS y la clusula DATA RECORDS.

184

COBOL/400 Gua del usuario

Formato

55FDnomb-arch5

55

RECORDentero--4

CONTAINS entero--3 TO
CHARACTERS

55

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

LABELRECORDSTANDARD

IS
OMITTED \

\
RECORDS
\

\
ARE
\

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

5.5%

DATARECORDnomb-fech-2

IS

RECORDS

ARE

La clusula LABEL RECORDS especifica si se presentan las etiquetas o no. Esta


clusula es necesaria en cada entrada de descripcin de archivos. Se comprueba
sintcticamente, pero se trata como documentacin.

tems de Datos Booleanos


La utilizacin de datos booleanos y de indicadores se describe en el apartado
Entrada de Descripcin de DatosDatos Booleanos en la pgina 151.

Divisin de Procedimiento
Conceptos de Divisin de Procedimiento
El lenguaje COBOL/400 proporciona una serie de ampliaciones a las instrucciones
PROCEDURE DIVISION para dar soporte al proceso TRANSACTION. Las secciones siguientes describen las instrucciones implicadas y su uso.

Captulo 8. Archivos Transaccin

185

Instruccin ACCEPT
La instruccin ACCEPT recupera la informacin (datos de atributo) sobre un dispositivo de programa particular asociado con un archivo TRANSACTION.
Instruccin ACCEPT Formato 6 Datos de Atributo

55ACCEPTidentific.-1FROMnomb-nemotc.5

55%

FORidentific.-2

literal-1 FORnomb-arch-1

Este formato de la instruccin ACCEPT slo puede utilizarse para archivos con una
organizacin de TRANSACTION. El nombre mnemotcnico debe asociarse al
nombre de funcin ATTRIBUTE-DATA en el prrafo SPECIAL-NAMES.
Si no se especifica el nombre de archivo, el archivo por omisin para la instruccin
ACCEPT es el primer archivo TRANSACTION especificado en una clusula
SELECT del prrafo FILE-CONTROL.
Si se especifica el literal-1 o el contenido del identificador-2, indica el nombre del
dispositivo de programa para el que estn disponibles los datos de atributo. Este
dispositivo debe definirse mediante un mandato CL: CRTDSPF, ADDICFDEVE o
OVRICFDEVE. No es obligatorio que se adquiera realmente el dispositivo. Si se
especifica el literal-1, debe ser no numrico con una longitud de 10 caracteres o
menos. Si se especifica el contenido del identificador-2, debe ser un tem de datos
alfanumrico con una longitud de 10 caracteres o menos. Si se especifica un
nombre incorrecto de dispositivo de programa, o si el archivo no est abierto
cuando se procesa la instruccin ACCEPT, se emite el mensaje LBE7205
Instruccin ACCEPT ATTRIBUTE-DATA anmala (C D F).
y termina el proceso.
Si se omiten ambas frases FOR (indicando que se est utilizando el archivo por
omisin TRANSACTION), la instruccin ACCEPT utiliza el dispositivo de programa
desde el que se realiz ms recientemente una operacin READ, WRITE,
REWRITE o ACCEPT (Datos de Atributo). Si la nica operacin anterior del
archivo fue una OPEN, la instruccin ACCEPT utiliza el dispositivo de programa
adquirido implcitamente 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 instruccin ACCEPT.
Los atributos del dispositivo de programa se mueven al identificador-1 desde el
formato de datos de atributos apropiado, de acuerdo con las normas para una instruccin MOVE de grupo sin la frase CORRESPONDING.

186

COBOL/400 Gua del usuario

El usuario podr hacer uso de varios archivos de pantalla junto con archivos ordinarios en un programa que incluya una instruccin ACCEPT o DISPLAY
ampliadas. Vea la publicacin COBOL/400 Reference para ms informacin.

Formatos de Datos Atributo


Los datos atributo recuperados mediante la instruccin ACCEPT tienen dos
formatos distintos, segn sean los datos para una estacin de trabajo o para un
dispositivo de comunicaciones.
El nombre mnemotcnico ATTRIBUTE-DATA slo puede utilizarse para obtener
informacin acerca de un dispositivo de programa para un archivo TRANSACTION.
Los datos atributo no proporcionan informacin acerca del estado de una operacin
completa de E/S o un intento en la misma operacin. Para obtener informacin
acerca de las operaciones de E/S, utilice la instruccin ACCEPT con Formato 3
con los nombres mnemotcnicos I-O-FEEDBACK u OPEN-FEEDBACK. Para ms
informacin acerca de estos nombres mnemotcnicos, consulte la seccin Prrafo
SPECIAL NAMES de la publicacin COBOL/400 Reference.

Instruccin ACQUIRE
La instruccin ACQUIRE adquiere un dispositivo de programa para un archivo
TRANSACTION.
Instruccin ACQUIRE Archivo TRANSACTION

55ACQUIREidentific.FORnomb-arch5%

literal

El literal o los contenidos del identificador indican el nombre del dispositivo de programa que debe adquirir el archivo especificado. Si se especifica el literal, debe
ser no numrico con una longitud de 10 caracteres o menos. Si se especifica el
identificador, debe hacer referencia a un tem de datos alfanumricos con una longitud de 10 caracteres o menor.
El nombre de archivo debe ser el nombre de un archivo con una organizacin de
TRANSACTION, y el archivo debe estar abierto cuando se ejecuta la instruccin
ACQUIRE. Se emite un mensaje de error de compilacin si la organizacin no es
TRANSACTION.
Para una descripcin de las condiciones que deben cumplirse antes de que se
pueda adquirir un dispositivo de comunicaciones, consulte la publicacin ICF
Programmers Guide. Para ms informacin acerca de los requisitos para pantallas, consulte la publicacin Gua para la Gestin de Datos.
La realizacin satisfactoria de la operacin ACQUIRE hace disponible para operaciones de entrada y salida el dispositivo de programa.

Captulo 8. Archivos Transaccin

187

Si la operacin ACQUIRE no es satisfactoria, el valor de estado del archivo se


establece en 9H y se llama al procedimiento USE AFTER EXCEPTION/ERROR (si
se especifica). Para ms informacin, consulte el Captulo 6, Manejo de Errores y
Excepciones COBOL/400.
Al abrir un archivo, slo se puede adquirir implcitamente un dispositivo de programa. Si un archivo es ICF, el parmetro ACQPGMDEV del mandato CRTICFF
determina el nico dispositivo de programa adquirido implcitamente. Si el archivo
es un archivo de pantalla, la primera entrada en el parmetro DEV del mandato
CRTDSPF determina el nico dispositivo de programa adquirido implcitamente.
Los dispositivos de programa adicionales deben adquirirse explcitamente.
Un dispositivo de programa se adquiere explcitamente utilizando la instruccin
ACQUIRE. Para un archivo ICF, dicho dispositivo debe haber sido definido con el
mandato CL ADDICFDEVE o OVRICFDEVE antes de abrir el archivo. Para los
archivos de pantalla no existe tal requisito. Es decir, el dispositivo nombrado en la
instruccin ACQUIRE no tiene que estar especificado ni en el parmetro DEV del
mandato CRTDSPF, ni en el CHGDSPF ni en el OVRDSPF. En un archivo de
pantalla, el nombre de dispositivo de programa debe coincidir con el de dispositivo
de pantalla.
La instruccin ACQUIRE tambin puede utilizarse como ayuda para la recuperacin de errores I/O. Para ms informacin, consulte la seccin Instruccin
ACQUIRE de la publicacin COBOL/400 Reference.
Para ms informacin acerca de dichos mandatos, consulte la publicacin CL
Reference.

Instruccin CLOSE
La instruccin CLOSE termina el proceso de volmenes y archivos, con bloqueo
opcional donde sea procedente.
Instruccin CLOSE Formato 3 Archivo TRANSACTION

55CLOSEnomb-arch-15%

LOCK

WITH

Para un anlisis detallado de la instruccin CLOSE, consulte la seccin Instruccin


CLOSE de la publicacin COBOL/400 Reference.

188

COBOL/400 Gua del usuario

Instruccin DROP
La instruccin DROP libera un dispositivo de programa adquirido por un archivo
TRANSACTION.
Instruccin DROP

55DROPidentific.FROMnomb-arch5%

literal

El literal o el contenido del identificador indican el nombre del dispositivo de programa del dispositivo a liberar. Si se especifica el literal, debe ser no numrico y
con una longitud de 10 caracteres o menor. Si se especifica el identificador, debe
referirse a un tem de datos alfanumrico con una longitud de 10 caracteres o
menos.
El nombre del archivo ha de referirse a un archivo con una organizacin de
TRANSACTION, y el archivo debe estar abierto para ser utilizado en la instruccin
DROP. Si no se emite ninguna instruccin DROP, los dispositivos de programa
conectados a un archivo TRANSACTION se liberan implcitamente cuando el
archivo se cierra finalmente.
Los dispositivos de programa especificados en una instruccin DROP han de haber
sido adquiridos por el archivo TRANSACTION, mediante una instruccin ACQUIRE
explcita o mediante una instruccin ACQUIRE implcita en tiempo OPEN.
Despus de la ejecucin satisfactoria de la instruccin DROP, el dispositivo de programa no est ya disponible para las operaciones de entrada y salida a travs del
archivo TRANSACTION. El dispositivo puede volverse a adquirir si es necesario.
El contenido del rea de registros asociada con un dispositivo de programa liberado no est ya disponible, incluso si se vuelve a adquirir el dispositivo.
Si la operacin DROP no es satisfactoria, se procesa el procedimiento USE
AFTER EXCEPTION/ERROR (si se especifica). Para ms informacin, consulte el
Captulo 6, Manejo de Errores y Excepciones COBOL/400.
La instruccin DROP tambin puede utilizarse como ayuda para la recuperacin de
errores de E/S. Para ms informacin, consulte la seccin Instruccin DROP de
la publicacin COBOL/400 Reference.

Instruccin OPEN
La instruccin OPEN inicia el proceso de archivos.

Captulo 8. Archivos Transaccin

189

Instruccin OPEN Formato 3 Archivos TRANSACTION

55OPEN I-Onomb-arch5%

Un archivo TRANSACTION debe abrirse en modalidad de E/S. Para un tratamiento adicional de la instruccin OPEN, consulte la COBOL/400 Reference.
La instruccin OPEN puede provocar que se adquiera implcitamente un dispositivo
de programa para un archivo TRANSACTION. Para un anlisis adicional acerca
de la adquisicin de dispositivos de programa, consulte el apartado Instruccin
ACQUIRE en la pgina 187.

Recursos Comunes de Proceso


El comentario siguiente sobre las frases FORMAT, INDICATORS, SUBFILE y TERMINAL est relacionado con las instrucciones READ, REWRITE y WRITE.

Frase FORMAT
El literal o identificador especificado debe ser una serie de caracteres con una longitud de 10 caracteres o menos.
Varios registros de datos, cada uno con un formato distinto, pueden estar activos
de forma simultnea para un archivo TRANSACTION. Si se especifica la frase
FORMAT, debe especificar un nombre de formato vlido que se define para el
sistema, y debe realizarse la operacin de E/S en un registro de datos del mismo
formato. Si el formato es un nombre no vlido 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.

Registro Especial DB-FORMAT-NAME: Despus de la ejecucin de una instruccin de entrada/salida para un archivo TRANSACTION, el registro especial
DB-FORMAT-NAME se modifica de acuerdo con las normas siguientes:
Si la operacin de entrada/salida es satisfactoria, el nombre del formato de
registro se mueve implcitamente al registro especial despus de la finalizacin
de la operacin de entrada/salida.
Si la operacin de entrada/salida no es satisfactoria, DB-FORMAT-NAME contiene el nombre del formato de registro utilizado en la ltima operacin de
entrada/salida satisfactoria.
Si no se especifica la frase FORMAT, puede utilizarse DB-FORMAT-NAME si el
archivo contiene un nombre de formato de registro por omisin. El valor por
omisin siempre se mueve al registro especial DB-FORMAT-NAME.
DB-FORMAT-NAME se define implcitamente como PICTURE X(10).

190

COBOL/400 Gua del usuario

Frase INDICATORS
El identificador especificado en la frase INDICATORS debe ser un tem de datos
booleanos elemental especificado sin la clusula OCCURS o un tem de grupo que
tiene tems de datos booleanos subordinados a l.
Cuando se graba o se regraba un registro de datos, los indicadores pueden grabarse o regrabarse con l. Los indicadores pueden controlar el modo de
visualizacin del registro y las diversas funciones de gestin de datos.
Cuando se lee un registro de datos, los indicadores pueden leerse con l. Los
indicadores pueden utilizarse para pasar informacin acerca de los registros de
datos y y de su entrada en el programa.
Al definir un formato utilizando DDS, el usuario determina qu funciones deben
controlarse mediante los indicadores y qu indicadores controlan una determinada
funcin.
Para una informacin detallada de la frase INDICATORS, consulte el apartado Utilizacin de Indicadores con Archivos Transaction en la pgina 149.

Frase SUBFILE
Si se especifica la frase SUBFILE, sta indica que todos los formatos referenciados
por la instruccin son subarchivos. Cuando no se especifica SUBFILE en una instruccin TRANSACTION I/O, indica que ninguno de los formatos referenciados por
la instruccin son subarchivos. Esta informacin no se verifica en tiempo de compilacin. 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.
Cuando no se especifica SUBFILE, el tem de datos RELATIVE KEY asociado con
el archivo, si se especifica, no se referencia o cambia mediante la operacin de
E/S.
Cuando se especifica SUBFILE, el tem de datos RELATIVE KEY debe definirse
para el archivo. La operacin de E/S referencia su valor, y a veces lo cambia.
Vea cada una de las instrucciones asociadas con las operaciones SUBFILE para
una descripcin detallada de cundo y cmo se cambia el tem de datos RELATIVE KEY.
La frase SUBFILE slo puede especificarse para los archivos de pantalla.

Frase TERMINAL
Cuando se especifica la frase TERMINAL, indica que un dispositivo de programa
especfico se va a utilizar para una operacin READ, WRITE o REWRITE en un
archivo TRANSACTION.
La frase TERMINAL puede omitirse para las operaciones de E/S en archivos de
dispositivo nico, porque ese dispositivo es el que se utiliza siempre.
Si se omite la frase TERMINAL para una operacin de E/S en un archivo
TRANSACTION que adquiri varios dispositivos de programa, se utiliza el dispositivo de programa que intent por ltima vez una operacin READ, WRITE,
REWRITE, ACQUIRE, DROP o ACCEPT (Datos de Atributo) en el archivo. Si la

Captulo 8. Archivos Transaccin

191

nica de las operaciones anteriores del archivo fue una OPEN, el dispositivo de
programa por omisin utilizado es el dispositivo de programa adquirido implcitamente por el archivo TRANSACTION cuando se abri el archivo. Se produce un
mensaje de error en tiempo de ejecucin si no se ha adquirido ningn dispositivo
de programa al abrir el archivo.
Para una instruccin READ con la frase TERMINAL y la frase NO DATA especificadas, se ejecuta la instruccin imperativa en la frase NO DATA slo si los datos
no estn inmediatamente disponibles desde el dispositivo de programa especificado mediante la frase TERMINAL.
Si se especifica la frase TERMINAL y el tem de datos o el literal est en blanco, la
frase se trata en tiempo de ejecucin como si no se hubiera especificado.

Instruccin READ
La instruccin READ hace que un registro est disponible desde un dispositivo,
utilizando un formato designado. Si el formato es un subarchivo, la instruccin
READ hace que un registro especfico est disponible desde dicho subarchivo.

192

COBOL/400 Gua del usuario

Instruccin READ Formato 4 Archivo TRANSACTION (No subarchivo)

55READnomb-arch5

RECORD

55

INTOidentific.-1

55

FORMATidentific.-2

IS literal-1

55

TERMINALidentific.-3

IS literal-2

55

INDICATORidentific.-4

INDICATORS IS

INDIC ARE

55

NO DATAsentencia-imperativa-1

55

ENDsentencia-imperativa-2

AT

55%

NOTENDsentencia-imperativa-3 END-READ

AT

El Formato 4 slo se utiliza para leer un formato que no sea un subarchivo. El


tem de datos RELATIVE KEY, si se especifica en la entrada FILE-CONTROL, no
se utiliza. La instruccin READ con Formato 4 no es vlida para un registro de
subarchivo. Sin embargo, debe utilizarse una instruccin READ de Formato 4 para
el formato de registro de control de subarchivo para colocar dichos registros de
subarchivo que se actualizaron en una pantalla en el subarchivo.
Si los datos solicitados estn disponibles, se devuelven al rea de registros. Los
nombres del formato de registro y del dispositivo de programa se devuelven al rea
I-O-FEEDBACK en el CONTROL-AREA.
La instruccin READ slo es vlida cuando hay dispositivos adquiridos para el
archivo. Si se procesa una instruccin READ y no hay dispositivos adquiridos, el
estado del archivo se establece en 92 (error lgico).
Captulo 8. Archivos Transaccin

193

El modo de funcionamiento de la instruccin READ con Formato 4 depende de:


Si la instruccin READ es para un archivo de un solo dispositivo o para
archivos de mltiples dispositivos
Si se ha solicitado un dispositivo de programa especfico mediante la frase
TERMINAL
Si se ha solicitado un formato de registro especfico mediante la frase
FORMAT
Si se ha especificado la frase NO DATA.
En las secciones siguientes, las referencias a datos disponibles o devueltos
incluyen la situacin en la que slo se establecen los indicadores de respuesta.
Esto se aplica tambin incluso cuando se utiliza un rea de indicadores separada y
dichos indicadores no se devuelven al rea de registros del archivo.
La tabla siguiente muestra las combinaciones posibles de frases y la funcin realizada para un archivo de dispositivo nico o para un archivo de mltiples dispositivos. Por ejemplo, si TERMINAL es N, FORMAT es N y NO DATA es N, el
dispositivo nico es D y el dispositivo mltiple es A.
Funcin

Frase

Y=S

Comprobado en
Compilacin

TERMINAL2

N=No

FORMAT2
NO DATA

NNNNYYYY
NNYYNNYY
NYNYNYNY

Determinado en
Tiempo de Ejecucin

Un Solo Dispositivo
Dispositivos Mltiples

DCDBDCDB
AADBDCDB

A continuacin se explican los cdigos A a D:

Cdigo ALectura desde Dispositivo de Programa Invitado (solamente Archivos de


Dispositivos Mltiples)
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 invitacin se realiza escribiendo el dispositivo de programa con un
formato que especifique la palabra clave INVITE de DDS. Una vez que se ha ledo
un dispositivo de programa invitado, ya no queda invitado por ms tiempo. Este
dispositivo de programa no se utilizar para la entradas mediante otra instruccin
READ a menos que se vuelva a invitar, o a menos que se le dirija una instruccin
READ especificando la frase TERMINAL o la frase FORMAT.
El formato de registro devuelto desde el dispositivo de programa se determina por
medio del sistema. Consulte el captulo sobre soporte de dispositivo de pantalla en
la publicacin Gua para la Gestin de Datos para obtener informacin acerca de
cmo se determina el formato de registro para estaciones de trabajo. Consulte la

Si se especifica la frase y el tem de datos o literal est en blanco, la frase se trata en tiempo de ejecucin como si no se hubiera
especificado.

194

COBOL/400 Gua del usuario

publicacin ICF Programmers Guide para obtener informacin acerca del parmetro FMTSLT de los mandatos ADDICFDEVE y OVRICFDEVE.
Esta instruccin READ puede completarse sin devolver ningn dato en los casos
siguientes:
Si no hay dispositivos invitados.
Si se produce una cancelacin controlada del trabajo. Esto da como resultado
un valor de estado de archivo de 9A y un valor de cdigo 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 cdigo
de retorno principal/secundario de 0310.
Si el tiempo de espera especificado es el valor entrado en el parmetro
WAITRCD para el archivo.
Si se especifica la frase NO DATA y no hay datos inmediatamente disponibles
cuando se procesa la READ.
Si hay datos disponibles, se devuelven al rea de registros. El formato de registro
se devuelve en el rea I-O-FEEDBACK y en el CONTROL-AREA. Para ms informacin acerca de Lectura desde Dispositivos de Programa Invitados, consulte la
publicacin ICF Programmers Guide.

Cdigo BLectura Desde Un Dispositivo de Programa (Combinacin no Permitida)


Se emite un mensaje en tiempo de compilacin, y se ignora la frase NO DATA.
Consulte la entrada de tabla para la misma combinacin de frases con la frase NO
DATA omitida.

Cdigo CLectura Desde Un Dispositivo de Programa (con la frase NO DATA)


Esta funcin de la instruccin READ nunca hace que un programa se detenga y
espere hasta que los datos estn disponibles. Se procesan los datos que estn
inmediatamente disponibles o bien la instruccin imperativa NO DATA.
Esta funcin READ puede utilizarse para comprobar peridicamente si los datos
estn disponibles desde un dispositivo de programa particular (o bien el dispositivo
de programa por omisin o uno especificado mediante la frase TERMINAL). Esta
comprobacin 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 omisin. El dispositivo de programa
por omisin es el que se utiliza por la instruccin 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 omisin es el primer dispositivo de programa adquirido.
b. Si se especific la frase TERMINAL, se utiliza el dispositivo de programa
indicado.
2. Se efecta una comprobacin para determinar si los datos estn disponibles y
si el dispositivo de programa est invitado.

Captulo 8. Archivos Transaccin

195

3. Si los datos estn disponibles, esos datos se devuelven al rea de registro y el


dispositivo de programa deja de estar invitado. Si no hay datos inmediatamente disponibles, se ejecuta la instruccin imperativa NO DATA y el dispositivo de programa permanece invitado.
4. Si el dispositivo de programa no est invitado, se dar la condicin AT END y
el estado del archivo se establece en 10.

Cdigo DLectura Desde Un Dispositivo de Programa (sin la frase NO DATA)


Esta instruccin READ siempre espera a que los datos estn disponibles. Incluso
si el trabajo recibe una cancelacin controlada o se especifica un tiempo
WAITRCD para el archivo, el programa nunca recuperar el control de la instruccin READ. Esta operacin 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 omisin. El dispositivo de programa por
omisin es el dispositivo de programa que utiliza la instruccin 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 implcitamente al abrir el
archivo. Si no hay dispositivos adquiridos, se dar la condicin 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 informacin acerca
de cmo se calcula el formato de registro para los dispositivos de estacin
de trabajo, consulte la publicacin Gua para la Gestin de Datos. Para
obtener informacin acerca de cmo se determina el formato de registro
para las comunicaciones, consulte la seccin del parmetro FMTSLT de
los mandatos ADDICFDEVE y OVRICFDEVE en la publicacin ICF
Programmers Guide.
b. Si se especifica la frase FORMAT, se devuelve el formato de registro indicado. Si los datos disponibles no coinciden con el formato de registro solicitado, se establece un estado de archivo de 9G.
3. El proceso del programa se detiene hasta que los datos estn disponibles.
Los datos se devuelven al rea de registro despus de que se ejecute la instruccin READ. Si el dispositivo de programa se invit anteriormente, no permanecer invitado por ms tiempo despus de esta instruccin READ.

Frase INTO
La frase INTO puede especificarse si:
Slo hay una descripcin de registro subordinada a la entrada de descripcin
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 alfanumrico elemental.

196

COBOL/400 Gua del usuario

Frase FORMAT
El literal-1 o el identificador-2 especifican el nombre del formato de registro a leer.
Si se especifica el literal-1, debe ser no numrico con una longitud de 10 caracteres o menos. Si se especifica el identificador-2, debe referirse a un tem de
datos alfanumrico con una longitud de 10 caracteres o menos. Si el
identificador-2 contiene espacios en blanco, se ejecuta la instruccin READ como
si se omitiera la frase FORMAT.

Frase NO DATA
Cuando se especifica la frase NO DATA, la instruccin READ determina si los
datos estn inmediatamente disponibles. Si hay datos disponibles, se devuelven al
rea de registros. Si no hay datos inmediatamente disponibles, se procesa la instruccin imperativa NO DATA. La frase NO DATA evita que la instruccin READ
espere a que los datos estn 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 numrico con una longitud de 10 caracteres o menos. Si se especifica el identificador-3, debe referirse a un tem de
datos alfanumricos con una longitud de 10 caracteres o menos. El dispositivo de
programa debe haberse adquirido antes de que se procese la instruccin READ.
Si el identificador-3 contiene espacios en blanco, se procesa la instruccin 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.
Si se omite la frase TERMINAL para una instruccin READ de un archivo
TRANSACTION que ha adquirido mltiples dispositivos de programa, se utiliza el
dispositivo de programa por omisin. Consulte el comentario de la frase TERMINAL en la pgina 191, para ver cmo se determina el dispositivo de programa
por omisin.

Frase AT END
La instruccin imperativa-2 se realiza cuando se detecta la condicin AT END.
Nota: Una condicin AT END se produce en los casos siguientes:
Durante una instruccin READ para un archivo con acceso secuencial cuando
no hay ningn registro lgico siguiente en el archivo, o cuando el nmero de
dgitos significativos en el nmero relativo de registro es mayor que el tamao
del tem de datos de clave relativa, o cuando no se presenta ningn archivo de
entrada opcional.
Durante una instruccin RETURN cuando no hay registros lgicos para la clasificacin asociada o el archivo de fusin.
Durante una instruccin SEARCH cuando la operacin de bsqueda finaliza sin
satisfacer la condicin especificada en cualquier frase WHEN asociada.

Frase NOT AT END


Esta frase sirve para especificar procedimientos a efectuar cuando la operacin
READ es satisfactoria.

Captulo 8. Archivos Transaccin

197

Frase END-READ
La frase END-READ sirve para delimitar explcitamente el mbito de la instruccin.
Instruccin READ Formato 5 Archivo TRANSACTION (Subarchivo)

55READ SUBFILEnomb-arch5

55

MODIFIED RECORD

NEXT

55

INTOidentific.-1

55

FORMATidentific.-2

IS literal-1

5TERMINALidentific.-35

IS literal-2

55

INDICATORidentific.-4

INDICATORS IS

INDIC ARE

55

INVALIDsentencia-imperativa-1

KEY

55

NOT INVALIDsentencia-imperativa-2

KEY

55

ENDsentencia-imperativa-3

AT

55%

NOTENDsentencia-imperativa-4 END-READ

AT

El formato 5 slo se utiliza para leer un formato que sea un registro de subarchivo.
La frase AT END slo puede utilizarse cuando se especifica la frase NEXT
MODIFIED. La frase INVALID KEY no debe utilizarse cuando se especifica la
frase NEXT MODIFIED.

198

COBOL/400 Gua del usuario

El formato 5 no puede utilizarse para dispositivos de comunicaciones. Si el


formato de subarchivo de la instruccin READ se utiliza para un dispositivo de
comunicaciones, la instruccin READ falla y se establece un estado de valor de 90.

Acceso al Azar de Registros de Subarchivo: La frase NEXT MODIFIED no debe


utilizarse para registros de acceso al azar en un subarchivo. La frase INVALID
KEY slo puede utilizarse para el acceso al azar de registros de subarchivo.
Acceso Secuencial de Registros de Subarchivo: La frase NEXT MODIFIED debe
especificarse para acceder a registros de subarchivo de forma secuencial. La
frase AT END slo puede especificarse con la frase NEXT MODIFIED.

Frase NEXT MODIFIED


Cuando no se especifica NEXT MODIFIED, el registro de datos disponible es el
registro en el subarchivo con un nmero relativo de registro que corresponde al
valor del tem de datos RELATIVE KEY.
Cuando no se especifica la frase NEXT MODIFIED, y si el tem de datos RELATIVE KEY contiene un valor que no sea el nmero de registro relativo de un
registro en un subarchivo, se dar la condicin INVALID KEY y la ejecucin de la
instruccin READ no ser satisfactoria.
Cuando se especifica la frase NEXT MODIFIED, el registro disponible es el registro
siguiente modificado que sigue a la posicin del puntero actual en el archivo. Para
obtener informacin acerca de la activacin del Distintivo de Datos Modificados,
consulte la publicacin Gua para la Gestin de Datos.
La bsqueda del siguiente registro modificado comienza:
Al principio del subarchivo si:
Se ha realizado una operacin de E/S para el registro de control de subarchivo.
La operacin de E/S ha borrado, inicializado o visualizado el subarchivo.
Para todos los otros casos, comienza en el registro que sigue al registro que
se ley mediante una operacin anterior de lectura.
El valor del tem de datos RELATIVE KEY se actualiza para reflejar el nmero
relativo de registro del registro disponible para el programa.
Si se especifica NEXT MODIFIED y no hay ms registros modificados por el
usuario en el subarchivo, existe la condicin AT END. Entonces se ejecuta la instruccin imperativa 2 o un procedimiento USE AFTER ERROR/EXCEPTION procedente, si lo hay.

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
operacin 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 informacin suministrada por el usuario

Captulo 8. Archivos Transaccin

199

Si se especifica la frase FORMAT, el literal-1 o el contenido del identificador-2


deben especificar un formato que est activo para el dispositivo de programa apropiado. La instruccin READ lee un registro de datos del formato especificado.
Para asegurarse de que los resultados sean correctos, especifique siempre la frase
FORMAT para archivos con mltiples formatos. Para ms informacin acerca de
la frase FORMAT, consulte la Divisin de Procedimientos, en Recursos Comunes
de Proceso en la pgina 190.

Frase TERMINAL
Consulte el Formato 4 de la instruccin READ para obtener las consideraciones
generales concernientes a la frase TERMINAL.
Para una instruccin READ de Formato 5, si se omite la frase TERMINAL de un
archivo que tenga dispositivos mltiples adquiridos, se lee un registro desde el subarchivo asociado al dispositivo de programa por omisin. Consulte el anlisis de la
frase TERMINAL en la pgina 191, para ver cmo se determina el dispositivo de
programa por omisin.

Frase INVALID KEY


Si en el momento de ejecucin de la instruccin, el tem de datos RELATIVE KEY
contiene un valor que no corresponde a un nmero relativo de registro para el subarchivo, la condicin INVALID KEY existe y la ejecucin de la instruccin no es
satisfactoria. Para ver lo que ocurre a continuacin, consulte los diagramas de la
pgina 80 a la pgina 82.
|

Para una instruccin READ con Formato 5, especifique la frase INVALID KEY si no
se especifica la frase NEXT MODIFIED y si no hay el procedimiento USE pertinente especificado para el nombre de archivo.

Frase NOT INVALID KEY


Esta frase le permite especificar los procedimientos a realizar cuando la operacin
READ es satisfactoria.

Frase AT END
Si se especifica la frase NEXT MODIFIED y no hay ningn registro modificado por
el usuario en el subarchivo, existe la condicin AT END y la operacin READ no es
satisfactoria.
Especifique la frase AT END cuando se utiliza la frase NEXT MODIFIED y no se
especifica ningn procedimiento USE aplicable para el nombre del archivo. Si se
especifica la frase AT END y el procedimiento USE para un archivo, y surge la
condicin AT END, el control se transfiere a la instruccin imperativa AT END y el
procedimiento USE no se ejecuta.

Frase NOT AT END


Esta frase le permite especificar los procedimientos a realizar cuando la operacin
READ es satisfactoria.

200

COBOL/400 Gua del usuario

Frase END-READ
La frase END-READ sirve para delimitar explcitamente el mbito de la instruccin.

Instruccin REWRITE
La instruccin REWRITE se utiliza para sustituir un registro de subarchivo que ya
existe en el subarchivo.
Instruccin REWRITE Formato 2 Archivo TRANSACTION (Subarchivo)

55REWRITE SUBFILEnomb-regist-15

FROMidentific.-1

5FORMATidentific.-25

IS literal-1

55

TERMINALidentific.-3

IS literal-2

55

INDICATORidentific.-4

INDICATORS IS

INDIC ARE

55

INVALIDsentencia-imperativa-1

KEY

55%

NOT INVALIDsentencia-imperativa-2 END-REWRITE

KEY

El nmero de posiciones de caracteres en el registro referenciado por el nombre


de registro debe ser igual al nmero de posiciones de caracteres en el registro a
sustituir. Una operacin READ satisfactoria en el registro debe ser anterior a la
operacin REWRITE. El registro sustituido en el subarchivo es el registro en el
subarchivo accedido mediante la anterior operacin READ.

Frase FORMAT
El formato de registro especificado en la frase FORMAT debe ser el formato de
registro accedido en la operacin READ anterior. El literal-1 o el contenido del
identificador-2 debe ser el nombre del formato del subarchivo accedido en la anterior instruccin READ. Para ms informacin acerca de la frase FORMAT, consulte el apartado Recursos Comunes de Proceso en la pgina 190.

Captulo 8. Archivos Transaccin

201

Frase TERMINAL
La frase TERMINAL indica en qu subarchivo de dispositivo de programa va a
regrabarse un registro. Si se especifica la frase TERMINAL, el literal-2 o el
identificador-3 deben hacer referencia a una estacin de trabajo adquirida mediante
el archivo TRANSACTION. Si el literal-2 o el identificador-3 contienen espacios en
blanco, la frase TERMINAL no tiene efecto. Debe haberse adquirido el dispositivo
de programa especificado mediante la frase TERMINAL, explcita o implcitamente,
y debe tener un subarchivo asociado con el dispositivo.
El literal-2 o el identificador-3 deben ser nombres vlidos de dispositivo de programa. Si se especifica el literal-2, debe ser no numrico con una longitud de 10
caracteres o menos. Si se especifica el Identificador-3, debe referirse a un tem de
datos alfanumrico, de 10 caracteres o menos.
Si se omite la frase TERMINAL de un archivo TRANSACTION que adquiri varios
dispositivos de programa, el subarchivo utilizado es el subarchivo asociado con el
ltimo dispositivo de programa desde el que se ha intentado una instruccin READ
del archivo TRANSACTION.
La instruccin REWRITE no puede utilizarse para dispositivos de comunicaciones.
Si se utiliza la instruccin REWRITE para un dispositivo de comunicaciones, la
operacin fracasa y el estado del archivo se establece en 90.

Frase INVALID KEY


Si en el momento de ejecucin de la instruccin, el tem de datos RELATIVE KEY
contiene un valor que no corresponde a un nmero relativo de registro para el subarchivo, la condicin INVALID KEY existe y la ejecucin de la instruccin no es
satisfactoria. Para ver lo que ocurre a continuacin, consulte los diagramas de la
pgina 80 a la pgina 82.

Frase NOT INVALID KEY


Esta frase le permite especificar los procedimientos a realizar cuando la operacin
REWRITE es satisfactoria.

Frase END-REWRITE
La frase END-REWRITE sirve para delimitar explcitamente el mbito de la instruccin.

202

COBOL/400 Gua del usuario

Instruccin WRITE
La instruccin WRITE libera un registro lgico para el archivo.
Instruccin WRITE Formato 4 Archivo TRANSACTION (No subarchivo)

55WRITEnombre-registro-15

FROMidentific.-1

5FORMATidentific.-25

IS literal-1

55

TERMINALidentific.-3

IS literal-2

55

STARTINGidentific.-4

AT LINE literal-3

55

BEFOREROLLINGidentific.-55

AFTER
LINES literal-4

LINE

55
5identific.-6UPidentific.-7

THROUGH literal-5 DOWN literal-6 LINES

THRU
LINE

55%

INDICATORidentific.-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.
El contenido del literal-2 o el identificador-3 debe ser el nombre de un dispositivo
de programa anteriormente adquirido, implcita o explcitamente, por el archivo. Si
se especifica el literal-2, debe ser no numrico con una longitud de 10 caracteres o
menos. Si se especifica el identificador-3, debe referirse a un tem de datos
alfanumricos con una longitud de 10 caracteres o menos. Un valor de espacios
en blanco se trata como si se omitiera la frase TERMINAL.

Captulo 8. Archivos Transaccin

203

Si el archivo TRANSACTION slo ha adquirido un nico dispositivo de programa,


la frase TERMINAL puede omitirse. Dicho dispositivo de programa siempre se
utiliza para la instruccin WRITE.
Si la frase TERMINAL se omite para una operacin WRITE en un archivo
TRANSACTION que ha adquirido mltiples dispositivos de programa, se utiliza el
dispositivo de programa por omisin. Consulte el anlisis de la frase TERMINAL
en la pgina 191, para ver cmo se determina el dispositivo de programa por
omisin.

Frase STARTING
La frase STARTING especifica el nmero inicial de lnea para los formatos de
registro que utilicen la palabra clave lnea de comienzo variable. Esta frase slo es
vlida para dispositivos de pantalla.
El nmero real de lnea en el que comienza un campo puede determinarse con la
ecuacin siguiente:

Lnea-real = Lnea inicial + Lnea inicial de las DDS 1

Figura 66. Ecuacin del Nmero de Lnea para la Frase STARTING

Donde:
Lnea real es el nmero real de lnea
Lnea inicial es el nmero de lnea inicial especificado en el programa
Lnea inicial de las DDS es el nmero de lnea especificado en las posiciones
39 a 41 del formulario Especificaciones de Descripcin de Datos.
La operacin WRITE es satisfactoria si:
El resultado de la ecuacin anterior es positivo y menor o igual al nmero de
lneas en la pantalla.
El valor especificado para la frase STARTING es 0. En este caso, se asume
un valor de 1.
La operacin WRITE no es satisfactoria, y el programa finaliza, si:
El resultado de la ecuacin anterior es mayor que el nmero de lneas en la
pantalla.
El valor especificado para la frase STARTING es negativo.
Si el valor especificado para la frase STARTING est dentro del rea de pantalla,
se ignora cualquier campo fuera del rea de pantalla.
El literal-3 de la frase STARTING debe ser un literal numrico. El identificador-4
debe ser un tem numrico elemental.
Para utilizar la frase STARTING, debe especificarse la palabra clave a nivel de
registro DDS SLNO(*VAR) para el formato a grabar. Si el formato de registro no
especifica esta palabra clave, se ignora la frase STARTING en tiempo de ejecucin.

204

COBOL/400 Gua del usuario

La palabra clave CLRL de las DDS tambin afecta a la frase STARTING. CLRL
controla la cantidad de pantalla que se borra cuando se procesa la instruccin
WRITE.
Vea la publicacin DDS Reference para obtener ms informacin acerca de las
palabras clave SLNO(*VAR) y CLRL.

Frase ROLLING
La frase ROLLING le permite mover lneas visualizadas en la pantalla de la
estacin de trabajo. Todas o algunas lneas de la pantalla pueden girarse hacia
arriba o hacia abajo. Se borran las lneas que dejan desocupadas las lneas
giradas, y pueden tener otro formato de pantalla escritos en ellas. Esta frase slo
es vlida para dispositivos de pantalla.
ROLLING se especifica en la instruccin WRITE que est grabando un nuevo
formato en la pantalla. El usuario deber especificar si la grabacin es antes o
despus de girar, as como el rango de lneas que se desea girar, la cantidad de
lneas que se desea girar dichas lneas y si la operacin de girar es hacia arriba o
hacia abajo.
Una vez que las lneas se han girado, los campos en estas lneas retienen sus
atributos de pantalla de las DDS (por ejemplo, el subrayado), pero pierden sus atributos de utilizacin de las DDS (por ejemplo, la posibilidad de entrada). Los
campos en lneas que se graban y despus se giran (frase BEFORE ROLLING)
tambin pierden sus atributos de utilizacin.
Si se gira cualquier parte de un formato, todo el formato pierde sus atributos de
utilizacin. Si hay ms de un formato, slo los formatos girados pierden sus atributos de utilizacin.
Cuando especifique la frase ROLLING, se aplican las normas generales siguientes.
La palabra clave ALWROL a nivel de registro de las DDS debe especificarse
para cada formato de registro grabado en una instruccin WRITE que contiene
la frase ROLLING.
No han de utilizarse otras palabras clave DDS que se excluyan mutuamente
con la palabra clave ALWROL.
Ambas palabras clave DDS, CLRL u OVERLAY, deben especificarse para un
formato de registro que se va a grabar y girar para evitar que la pantalla de
visualizacin se borre cuando se graba el formato de registro. Consulte el
manual DDS Reference para ms informacin acerca de las palabras clave
DDS.
Todos los identificadores y literales deben representar valores enteros positivos.
El nmero de la lnea inicial del giro (identificador-5 o literal-4) no debe sobrepasar el nmero de lnea final (identificador-6 o literal-5).
Desaparece el contenido de las lneas que al girar salen fuera de la ventana
especificada por los nmeros de lnea inicial y final.
La Figura 67 en la pgina 207 muestra un ejemplo de operacin de giro. Se
escribe un formato de pantalla inicial, FMT1, en la pantalla. El programa procesa
este formato de pantalla y ahora est listo para escribir el siguiente formato de

Captulo 8. Archivos Transaccin

205

pantalla, FMT2, en la pantalla de la estacin de trabajo. Una parte del FMT1 se


gira dos lneas hacia abajo antes de que se escriba FMT2 en la pantalla.
El proceso de la instruccin WRITE siguiente provoca que una parte de FMT1 se
gire dos lneas hacia abajo, y que FMT2 se escriba en la pantalla de la estacin de
trabajo:
WRITE SCREENREC FORMAT "FMT2"
AFTER ROLLING LINES 14 THROUGH 2
DOWN 2 LINES
Cuando se ejecuta la instruccin WRITE, se realizan los pasos siguientes:
1. El contenido de las lneas 14 a 20 se giran hacia abajo dos lneas.
a. El contenido de las lneas 14 a 18 aparecen ahora en las lneas 16 a 20.
b. El contenido de las lneas 14 y 15 est vaco y borrado.
c. El contenido de las lneas 19 y 20 al girar se traslada fuera de la ventana y
desaparece.
2. Una vez que se lleva a cabo la operacin de giro, se graba FMT2 en la pantalla.
a. Se escribe parte de FMT2 en el rea desocupada por la operacin de giro.
b. Se escribe parte de FMT2 encima de los datos que quedan de FMT1.
3. Cuando una instruccin READ devuelve el contenido de la pantalla al programa, slo se devuelven los campos de FMT2 con capacidad de entrada.

206

COBOL/400 Gua del usuario

PANTALLA ANTES DEL PROCESO DE LA INSTRUCCIN WRITE

ACTUALIZACIN DE REGISTRO DE PEDIDO DE CLIENTE


Lnea 3

PARA FINALIZAR ESTE TRABAJO, PULSE F7


Lnea 8

INTRODUZCA SU NUMERO DE OPERADOR: ___


Lnea 13

Lnea 14

ENTRE EL NUMERO CLIENTE: _____


Lnea 15

PULSE F3 PARA VISUALIZAR MENU OPCIN


Lnea 17

Lnea 2

Estas 7 lneas de
PANTALLA DESPUS DEL PROCESO DE LA INSTRUCCIN WRITE
5FMT1 se girarn
2 lneas hacia

abajo.

ACTUALIZACIN DE REGISTRO DE PEDIDO DE CLIENTE


Lnea 3

PARA FINALIZAR ESTE TRABAJO, PULSE F7


Lnea 8

NMERO ARTCULO PEDIDO: ______


Lnea 12

CANTIDAD PEDIDA: ______


Lnea 14

ENTRE NMERO CLIENTE: XXXXX


Lnea 17

PULSE F3 PARA VISUALIZAR MEN OPCIN


Lnea 19

Estas 3 lneas de
5FMT2 se han grabado
sobre las lneas
anteriores.
Figura 67. Ejemplo de Operacin ROLLING

Captulo 8. Archivos Transaccin

207

Instruccin WRITE Formato 5 Archivo TRANSACTION (Subarchivo)

55WRITE SUBFILEnombre-registro-15

FROMidentific.-1

5FORMATidentific.-25

IS literal-1

55

TERMINALidentific.-3

IS literal-2

55

INDICATORidentific.-4

INDICATORS IS

INDIC ARE

55

INVALIDsentencia-imperativa-1

KEY

55%

NOT INVALIDsentencia-imperativa-2 END-WRITE

KEY

El formato 5 slo se puede utilizar para dispositivos de pantalla. Si se utiliza el


formato de subarchivo de la instruccin WRITE para cualquier otro tipo de dispositivo, falla la operacin WRITE y el estado del archivo se establece en 90.
Si el formato es un registro de subarchivo, y se especifica SUBFILE, tiene que
haberse especificado la clusula RELATIVE KEY en la clusula SELECT para el
archivo a grabar. El registro grabado en el subarchivo es el registro del subarchivo
identificado mediante el nombre de formato que tiene un nmero relativo de
registro igual al valor del tem de datos RELATIVE KEY. Vea la publicacin Gua
para la Gestin de Datos para ms informacin acerca de los subarchivos.

Frase TERMINAL
Consulte la explicacin que sigue al Formato 4 para ver las consideraciones generales concernientes a la frase TERMINAL.
La frase TERMINAL especifica en qu subarchivo de dispositivo de programa va a
grabarse un registro. Si se especifica la frase TERMINAL, el literal-2 o el
identificador-3 deben hacer referencia a una estacin de trabajo asociada con el
archivo TRANSACTION. Si el literal-2 o el identificador-3 contienen un valor en
blanco, la frase TERMINAL se trata como si no se hubiera especificado. La

208

COBOL/400 Gua del usuario

estacin de trabajo estacin de trabajo especificada mediante la frase TERMINAL


debe adquirirse explcita o implcitamente.
Si se omite la frase TERMINAL, el subarchivo utilizado es el subarchivo asociado
con el dispositivo de programa por omisin. Consulte el anlisis de la frase TERMINAL en la pgina 191, para ver cmo se determina el dispositivo de programa
por omisin.

Frase INVALID KEY


La condicin INVALID KEY existe si un registro ya est en el subarchivo con ese
nmero de registro, o si el nmero relativo de registro especificado es mayor que
el mximo nmero de registro de subarchivo permitido. La frase INVALID KEY
debe especificarse en la instruccin WRITE SUBFILE para todos los archivos en
los que no se especifique un procedimiento USE adecuado.
Para ms informacin acerca de lo que ocurre cuando aparece la condicin
INVALID KEY, consulte los diagramas en las pginas 80 a 82.

Frase NOT INVALID KEY


Esta frase le permitir especificar los procedimientos a realizar cuando la operacin
WRITE sea satisfactoria.

Frase END-WRITE
La frase END-WRITE sirve para delimitar explcitamente el mbito de la instruccin.
Para un anlisis ms detallado de la instruccin WRITE, de la frase FROM y de la
frase INVALID KEY, vea el manual COBOL/400 Reference. Para ms informacin
acerca de la frase FORMAT, consulte la Divisin de Procedimientos, en el apartado Recursos Comunes de Proceso en la pgina 190.

Instruccin USE
La instruccin USE especifica los procedimientos para el manejo de errores de
entrada/salida que existen junto con los procedimientos estndar proporcionados
por el sistema de control de entrada/salida.
Formato

55USE AFTEREXCEPTION5

STANDARD ERROR

5PROCEDUREnomb-arch-15%

ON
I-O

Captulo 8. Archivos Transaccin

209

Consulte la seccin Instruccin USE de la publicacin COBOL/400 Reference


para un anlisis ms detallado de la instruccin USE.

Programas Ejemplo de Estacin de Trabajo


Esta seccin contiene ejemplos de programas COBOL que ilustran las aplicaciones
de estaciones de trabajo en el sistema AS/400.

Programa Bsico de Consulta


La Figura 68 muestra las DDS asociadas a un programa bsico de consulta que
utiliza el archivo TRANSACTION de COBOL
G X 2 1 - 9 8 9 1 - 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
Inter national

B usiness

Machines

*El

Archivo

Signo

nmero

de

hojas por

rea

de

Impreso
relleno puede

Descripcin

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

A * A R C H I VO

1 5

1 8

1 9

2 0

2 1

2 2

2 3

MA E S T R O

2 4

2 5

D E

2 6

2 7

2 8

2 9

Tipo
3 0

3 1

3 2

3 3

3 4

CO N S U L T A

3 5

(b/O /I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

D E

Ubicacin

Funciones

Lnea

3 9

4 0

C L

4 1

P o s

4 2

4 3

4 4

4 5

I E N T E

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

C U S M I NQ

A *
A

R E F ( CU SMS T P )

CU S PMT

T E X T (

' SOL

CA 0 3 ( 1 5

3 ' CO N S U L T A

3 ' N UME R O

A
A

CU S T

E R RMSG (

T R ADO

D UC I R
5

3 ' U T I L

U T I L

CU S F L D S

8
N AM E

I CE

SOL

CL

I E N T E S '

F 3
L A

D E

CL

I E N T E

R E S T AUR AR ,
VA L

I DO '

P AR A

NO

E N CO N

L U E GO

I N T RO

9 9 )

F I NA L

T EC L A

I C I T AR

I N T RO

I Z AR

P R OG R A M A , +

P AR A

VO L V E R

P AN T A L L A '

' P AN T A L L A
' F I N

D E

D E

CL

I E N T E '

P R OG R A M A '

9
/

3 ' N OM B R E '
1 1
3 ' D I R E CC I ON '

C I T Y

1 0

S T A T E

1 1

1 1

1 1

2 1 ' C O D I GO

Z I P

1 1

3 1

AR B A L

1 /
0

1 1

A
A

' N UME R O

N UME R O

ADD R

8
9

OV E R L A Y

I E N T E '

I E N T E '

P U L S E

CA 0 3 ( 1 5

C L

P R OG R A M A '

MA E S T R A

C L

I CE

T E X T (

D E

D E

2 /
0

9 9

I C I T UD

' F I N

1 2
1 2

1 1
3 ' C I U D AD '
1 1
3 ' P R OV I NC I A '

3 ' B A L A NC E

POS T A L

'

A / R '

1 7

A
A
A
A
A
A

Figura 68. Ejemplo de Programa de Consulta TRANSACTION que Utiliza un Solo Dispositivo de Pantalla

210

COBOL/400 Gua del usuario

Las especificaciones de descripcin de datos (DDS) para el archivo de dispositivo


de pantalla (CUSMINQ) que utiliza este programa describen dos formatos de
registro: CUSPMT y CUSFLDS.
El formato de registro CUSPMT contiene la constante Consulta Muestra Clientes,
que identifica a la pantalla. Contiene, asimismo, el indicador Nmero Cliente y el
campo de entrada (CUST) en el que puede entrar el nmero de cliente. En la
pantalla en la que se va a entrar el nmero de cliente, aparecern cinco caracteres
de subrayado debajo del campo de entrada CUST. El mensaje de error:
Nmero de cliente no encontrado
tambin se incluye en este formato de registro. Este mensaje se visualiza si el
programa ACTIVA el indicador 99. Adems, este formato de registro define una
tecla de funcin que se puede pulsar para finalizar el programa. Cuando se pulsa
la tecla de funcin F3, el indicador 15 se ACTIVA en el programa COBOL. Este
indicador se utiliza para finalizar el programa.
El formato de registro CUSFLDS contiene las constantes siguientes:

Nombre
Direccin
Ciudad
Provincia
Cdigo Postal
Saldo C/C.

Estas constantes identifican los campos a grabar fuera del programa. Este formato
de registro tambin describe los campos que corresponden a estas constantes.
Todos estos campos se describen como campos de salida (espacio en blanco en
la posicin 38) debido a que los rellena el programa; no entre ningn dato en estos
campos. Para entrar otro nombre de cliente, pulse Intro en respuesta a este
registro. Observe que el registro CUSFLDS recubre el registro CUSPMT. Por lo
tanto, cuando el registro CUSFLDS se graba en la pantalla, el registro CUSPMT
permanece en pantalla.
Adems de la descripcin de constantes, campos y atributos para la pantalla, los
formatos de registro tambin definen los nmeros de lneas y las posiciones horizontales en las que se van a visualizar las constantes y campos.
Nota: Los atributos de campo se definen en un archivo fsico (CUSMSTP) utilizado a efectos de referencia de campos, en lugar de hacerlo en las DDS
para el archivo de pantalla. Por ejemplo, EDTCDE(J) se define en
CUSMSTP para el campo ARBAL.

Captulo 8. Archivos Transaccin

211

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nmero

Signo

Archivo

de hojas por

rea

Impreso

de relleno puede variar

Descripcin

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

10

1 1

1 2

1 3

1 4

1 5

1 7

1 8

1 9

2 0

2 1

2 2

2 3

CU SMS T P
R

2 4

2 5

2 7

2 8

2 9

Tipo

Referencia (R)
2 6

3 0

3 1

3 2

3 3

3 4

A R C H I VO

3 5

(b/O /I/B/H/M/N/P)

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
Nombre

1 6

Reservado

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

F I S I CO

Longitud

3 6

Utilizacin

Nom bre

D ecimales

A * *

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

MA E S T R O

CU SMS T

P o s

4 2

4 3

4 4

D E

4 5

4 6

4 7

CL

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

T E X T (

' R EG I S T RO

T E X T (

' N UME R O

D E

D E
C L

I E N T E '

T E X T (

' N OM B R E

D E

C L

I E N T E '

T E X T (

' D I R E CC I ON

D E

T E X T (

' C I U D AD

C L

T E X T (

' P R OV I NC I A '

T E X T (

' C O D I GO

POS T A L

T E X T (

' C O D I GO

B U S QU E DA

T E X T (

' T I PO

CU S T

N AM E

2 5

ADD R

2 0

C I T Y

2 0

S T A T E

Z I P

S R H C OD

CU S T Y P

0 0

/ /

AR B A L

0 2

T E X T (

' S A L DO

OR D B A L

0 2

T E X T (

'

L S T AM T

0 2

T E X T (

' U L T I MO

I MP OR T E

L S T DA T

0 0

/ /

T E X T (

' U L T I MA

F E CHA

CRD L M T

0 2

T E X T (

' L

CR E D I T O

C L

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

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

/ /

3 = B U S

6 8

CA B E C E R A

0 0

6 7

6 9

7 0

7 1

7 2

7 3

7 4

7 5

7 6

7 7

7 8

7 9

D E

C L

4 = P V T

I E N T E '

I E N T E '

P E D I DO S '

I E N T E

5 =O T '

'

)
N UM

1 = GO B

C L

I E N T E '

2 = P L AN

CU E N T A S

I MP OR T E

I M I T E

C L

D E

A / R

P OR

E N

CO B R A R '

ARCH

P AG A D O

P AG A D A

P E D I DO S '
E N

E N

I E N T E '

A / R '

A / R '

A O '

P A S ADO '

CU S T

Figura 69. Especificaciones de Descripcin de Datos para un Formato de Registro CUSMST

Las especificaciones de descripcin de datos (DDS) para el archivo de base de


datos que utiliza este programa describen un formato de registro: CUSMST. Se
describe cada campo en el formato de registro, y el campo CUST se identifica
como el campo de clave para el formato de registro.

212

COBOL/400 Gua del usuario

8 0

I E N T E S
)

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
XMPLE766.
3\
EJEMPLO PROG. DE CONSULTA TRANSACTION QUE UTILIZA 1 DISP. DE PANT.
3 4 AUTHOR.
PROGRAMMER NAME.
4 5 INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 6 DATE-WRITTEN. 12/21/88.
6 7 DATE-COMPILED. 5/24/94 13:42:5
.
7 8 ENVIRONMENT DIVISION.
8 9 CONFIGURATION SECTION.
9 1 SOURCE-COMPUTER. IBM-AS4.
1 11 OBJECT-COMPUTER. IBM-AS4.
11 12 INPUT-OUTPUT SECTION.
12 13 FILE-CONTROL.
13 14
SELECT CUST-DISPLAY
14 15
ASSIGN TO WORKSTATION-CUSMINQ
15 16
ORGANIZATION IS TRANSACTION
16 17
CONTROL-AREA IS WS-CONTROL.
17 18
SELECT CUST-MASTER
18 19
ASSIGN TO DATABASE-CUSMSTP
19 2
ORGANIZATION IS INDEXED
2 21
ACCESS IS RANDOM
21 22
RECORD KEY IS CUST OF CUSMST
22 23
FILE STATUS IS CM-STATUS.
23 24 DATA DIVISION.
24 25 FILE SECTION.
25 26 FD CUST-DISPLAY
26 27
LABEL RECORDS ARE OMITTED.
27 28 1 DISP-REC.
28 29
COPY DDS-ALL-FORMATS OF CUSMINQ.
29 +1
5 CUSMINQ-RECORD PIC X(8).
<-ALL-FMTS
+2\ FORMATO ENTRADA:CUSPMT
DESDE ARCHIVO CUSMINQ
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+3\
SOLICITUD CLIENTE
<-ALL-FMTS
3 +4
5 CUSPMT-I
REDEFINES CUSMINQ-RECORD.
<-ALL-FMTS
31 +5
6 CUSPMT-I-INDIC.
<-ALL-FMTS
32 +6
7 IN15
PIC 1 INDIC 15.
<-ALL-FMTS
+7\
FIN DE PROGRAMA
<-ALL-FMTS
33 +8
7 IN99
PIC 1 INDIC 99.
<-ALL-FMTS
+9\
NMERO CLIENTE NO HALLADO, PULSAR REST, EL
<-ALL-FMTS
34 +1
6 CUST
PIC X(5).
<-ALL-FMTS
+11\
NMERO CLIENTE
<-ALL-FMTS
+12\FORMATO SALIDA:CUSPMT
DESDE ARCHIVO CUSMINQ
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+13\
SOLICITUD CLIENTE
<-ALL-FMTS
35 +14
5 CUSPMT-O
REDEFINES CUSMINQ-RECORD.
<-ALL-FMTS
36 +15
6 CUSPMT-O-INDIC.
<-ALL-FMTS
37 +16
7 IN99
PIC 1 INDIC 99.
<-ALL-FMTS
+17\
NMERO CLIENTE NO HALLADO, PULSAR REST, EL
<-ALL-FMTS
+18\ FORMATO ENTRADA:CUSFLDS
DESDE ARCHIVO CUSMINQ
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+19\
PANTALLA CLIENTE
<-ALL-FMTS
38 +2
5 CUSFLDS-I
REDEFINES CUSMINQ-RECORD.
<-ALL-FMTS
39 +21
6 CUSFLDS-I-INDIC.
<-ALL-FMTS
4 +22
7 IN15
PIC 1 INDIC 15.
<-ALL-FMTS
+23\
FIN DE PROGRAMA
<-ALL-FMTS
+24\FORMATO SALIDA:CUSFLDS
DESDE ARCHIVO CUSMINQ
DE BIBLIOTECA XMPLIB
<-ALL-FMTS
+25\
PANTALLA CLIENTE
<-ALL-FMTS
41 +26
5 CUSFLDS-O
REDEFINES CUSMINQ-RECORD.
<-ALL-FMTS
42 +27
6 NAME
PIC X(25).
<-ALL-FMTS
+28\
NOMBRE CLIENTE
<-ALL-FMTS
43 +29
6 ADDR
PIC X(2).
<-ALL-FMTS
+3\
DIRECCIN CLIENTE
<-ALL-FMTS
44 +31
6 CITY
PIC X(2).
<-ALL-FMTS
+32\
CIUDAD CLIENTE
<-ALL-FMTS
45 +33
6 STATE
PIC X(2).
<-ALL-FMTS
+34\
PROVINCIA
<-ALL-FMTS
46 +35
6 ZIP
PIC S9(5).
<-ALL-FMTS
+36\
CDIGO POSTAL
<-ALL-FMTS
47 +37
6 ARBAL
PIC S9(6)V9(2).
<-ALL-FMTS
+38\
SALDO CUENTAS PEND
<-ALL-FMTS
3
48 31 FD CUST-MASTER
49 32
LABEL RECORDS ARE STANDARD.
5 33 1 CUST-REC.
51 34
COPY DDS-CUSMST OF CUSMSTP.
+1\
FORMATO E-S:CUSMST
DESDE CUSMSTP DE BIBLIOTECA XMPLIB
CUSMST

FECH/CAM
1/22/94
3/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94
1/22/94

Figura 70 (Parte 1 de 2). Listado Fuente de un Programa de Consulta TRANSACTION que Utiliza un Solo Dispositivo de Pantalla

Captulo 8. Archivos Transaccin

213

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
+2\
REGISTRO MAESTRO CLIENTE
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO CUSMST
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
+5\
1
CUST
ASCENDENTE
AN
NO
52 +6
5 CUSMST.
53 +7
6 CUST
PIC X(5).
+8\
NMERO CLIENTE
54 +9
6 NAME
PIC X(25).
+1\
NOMBRE CLIENTE
55 +11
6 ADDR
PIC X(2).
+12\
DIRECCIN CLIENTE
56 +13
6 CITY
PIC X(2).
+14\
CIUDAD CLIENTE
57 +15
6 STATE
PIC X(2).
+16\
PROVINCIA
58 +17
6 ZIP
PIC S9(5)
COMP-3.
+18\
CDIGO POSTAL
59 +19
6 SRHCOD
PIC X(6).
+2\
CDIGO BSQUEDA NMERO CLIENTE
6 +21
6 CUSTYP
PIC S9(1)
COMP-3.
+22\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
61 +23
6 ARBAL
PIC S9(6)V9(2)
COMP-3.
+24\
SALDO CUENTAS PEND
62 +25
6 ORDBAL
PIC S9(6)V9(2)
COMP-3.
+26\
CANTIDAD C/C EN ARCH. PEDIDOS
63 +27
6 LSTAMT
PIC S9(6)V9(2)
COMP-3.
+28\
ULTIMA CANTIDAD PAGADA EN C/C
64 +29
6 LSTDAT
PIC S9(6)
COMP-3.
+3\
ULTIMA FECHA PAGADA EN C/C
65 +31
6 CRDLMT
PIC S9(6)V9(2)
COMP-3.
+32\
LMITE CRDITO CLIENTE
66 +33
6 SLSYR
PIC S9(8)V9(2)
COMP-3.
+34\
VENTAS CLIENTE ESTE AO
67 +35
6 SLSLYR
PIC S9(8)V9(2)
COMP-3.
+36\
VENTAS CLIENTE AO PASADO
35
68 36 WORKING-STORAGE SECTION.
69 37 1 ONE
PIC 1 VALUE B"1".
7 38 1 CM-STATUS
PIC X(2).
71 39 1 WS-CONTROL.
72 4
2 WS-IND
PIC X(2).
73 41
2 WS-FORMAT
PIC X(1).
74 42 PROCEDURE DIVISION.
43 BEGIN.
75 44
OPEN I-O CUST-DISPLAY, INPUT CUST-MASTER.
76 45
MOVE ZERO TO IN99 OF CUSPMT-O.
46 LOOP.
77 47
WRITE DISP-REC FORMAT IS "CUSPMT".
78 48
READ CUST-DISPLAY RECORD.
79 49
IF IN15 OF CUSPMT-I
5
IS EQUAL TO ONE
8 51
THEN GO TO FINIS.
81 52
MOVE CUST OF CUSPMT-I TO CUST OF CUSMST.
82 53
READ CUST-MASTER RECORD.
83 54
IF CM-STATUS IS NOT EQUAL "" THEN
84 55
MOVE ONE TO IN99 OF CUSPMT-O, GO TO LOOP.
86 56
MOVE CORRESPONDING CUSMST TO CUSFLDS-O.
87 57
WRITE DISP-REC FORMAT IS "CUSFLDS".
88 58
READ CUST-DISPLAY RECORD.
89 59
IF IN15 OF CUSFLDS-I
6
IS EQUAL TO ONE
9 61
THEN GO TO FINIS.
91 62
MOVE ZERO TO IN99 OF CUSPMT-O.
92 63
GO TO LOOP.
64 FINIS.
93 65
CLOSE CUST-DISPLAY, CUST-MASTER.
66 RETURN-TO-CALLER.
94 67
EXIT PROGRAM.
\ \ \ \ \
F I N
D E
F U E N T E \ \ \ \ \

NOMCOPIA
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

FECH/CAM

Figura 70 (Parte 2 de 2). Listado Fuente de un Programa de Consulta TRANSACTION que Utiliza un Solo Dispositivo de Pantalla

El listado fuente para este programa de ejemplo se muestra aqu en su totalidad.


En especial, observe las entradas FILE-CONTROL y FD y las estructuras de datos
generadas por las instrucciones COPY de Formato 2.

214

COBOL/400 Gua del usuario

La operacin WRITE en la instruccin 77 escribe el formato CUSPMT en la pantalla. Este registro solicita que el usuario entre un nmero de cliente. Si entra un
nmero de cliente y pulsa Intro, entonces la operacin READ lee el registro de
nuevo en el programa.
La operacin READ en la instruccin 82 utiliza el campo de nmero de cliente
(CUST) para recuperar el registro CUSMST correspondiente del archivo
CUSMSTP. Si no se encuentra ningn registro en el archivo CUSMSTP, el indicador 99 se activa. La operacin GO TO en la instruccin 84, que se ejecuta
cuando se activa el indicador 99, provoca que el programa se bifurque hacia el
comienzo. El mensaje:
Nmero cliente no hallado
se visualiza cuando se escribe el formato, porque est condicionado por el indicador 99 en las DDS para el archivo. Al recibir este mensaje, el teclado se
bloquea. Debe pulsar la tecla Reset en respuesta a ese mensaje para desbloquear el teclado. El usuario puede entonces entrar otro nmero de cliente.
Si la operacin READ recupera un registro del archivo CUSMSTP, la operacin
WRITE escribe el registro CUSFLDS en la estacin de trabajo de la pantalla. Este
registro contiene el nombre de cliente, la direccin y el saldo de cuentas por
cobrar.
Puede entonces pulsar Intro, y el programa se bifurca hacia el comienzo. Puede
introducir otro nmero de cliente o finalizar el programa. Para finalizar el programa, pulse F3, que activa el indicador 15 en el programa.
Cuando se activa el indicador 15, el programa cierra todos los archivos y procesa
la instruccin EXIT PROGRAM. El programa devuelve el control a la persona que
llam al programa COBOL.
Esta es la pantalla inicial grabada por la operacin WRITE en la instruccin 77:

Consulta Maestro de Clientes


Nmero Cliente

________

Utilice F3 para finalizar programa, utilice la tecla Intro para regresar a


pantalla de solicitud

Esta pantalla aparece si se encuentra un registro en el archivo CUSMSTP para el


nmero de cliente entrado en respuesta a la primera pantalla:

Captulo 8. Archivos Transaccin

215

Consulta Maestro de Clientes


Nmero Cliente

Utilice F3 para finalizar programa, utilice la tecla Intro para regresar a


pantalla de solicitud
Nombre
Direccin
Ciudad
Provincia
Saldo C/C

EXAMPLE WHOLESALERS LTD.


ANYWHERE STREET
ACITY
IL
Cd. Postal 12345
137.2

Esta pantalla aparece si el archivo CUSMSTP no contiene un registro para el


nmero de cliente entrado en respuesta a la primera pantalla:

Consulta Maestro de Clientes


Nmero Cliente
Utilice F3 para finalizar programa, utilice la tecla Intro para regresar a
pantalla de solicitud

No encontrado nmero cliente, pulsar Reset, luego entrar nmero vlido

Programas de Consulta de Pedidos que utilizan Subarchivos


La Figura 72 en la pgina 220 muestra un ejemplo de un programa de consulta de
pedidos, XMPLE773, que utiliza subarchivos. Se muestran asimismo las DDS asociadas, excepto las DDS del archivo maestro de clientes, CUSMSTP. Consulte la
Figura 69 en la pgina 212 para las DDS de CUSMSTP.
XMPLE773 visualiza todos los registros de detalle del pedido para el nmero de
pedido solicitado. El programa solicita al usuario que entre el nmero de pedido
que debe revisarse. El nmero de pedido se comprueba con el archivo de cabecera de pedido, ORDHDRP. Si existe el nmero de pedido, el nmero 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 grabacin 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.

216

COBOL/400 Gua del usuario

GX21-9891-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
International Business Machines

de Grabacin

A * *

10

12

13

14

15

16

17

P H Y S I CA L

18

19

20

21

22

23

24

25

OR DD T L P

26

27

28

29

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

Indicador

No (N)
11

Referencia (R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

Longitud

30

31

32

33

34

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

Nom bre

Descripcin

Pgina

de

Tecla

D ecimales

And/Or/Com ent. (A/O/*)

Nombre Condicin

Indicador

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo

Programador

UM/050*

Impreso en Espaa

*El nmero de hojas por rea de relleno puede variar ligeramente.

37

38

A R C H I VO

Ubicacin

Funciones

Lnea

39

DE

40

41

Pos

42

43

44

45

46

47

DE TAL L E

48

49

50

51

DE

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

P E D I DO

T E X T ( ' U B I C AC I ON

A L MA C E N ' )

A *
A

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

CH E CK ( MF )

OR D E R N

/0

L I N N UM

/0

CO L H D G ( ' C L I E N T E '

' N UME R O ' )

A *
A

CO L H D G ( ' P E D I D O '

' N UME R O ' )

A *
A
A

CO L H D G ( ' L I N E A '

T E X T ( ' N UM

' NO ' )

L I NEA

DE

L I NEA

EN

P E D I DO ' +

A *
A

I T EM

/0

/0

/ )
CH E CK ( M1 0
CO L H D G ( ' I T E M '

Q T YOR D

' N UME R O ' )

CO L H D G ( ' C A N T I D A D '

T E X T ( ' CAN T I D AD

' P E D I DA ' )

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

0
/ )

CM P ( G T

CO L H D G ( ' P R E C I O ' )

T E X T ( ' PR EC I O

VENTA ' )

E D T CD E ( J )

E X T ENS

CO L H D G ( ' E X T E N S I ON ' )

T E X T ( ' CA L CU L O

Q T Y OR D ' )

I MP OR T E

DE

PR EC I O

X+

A *
A

W H S L OC

CH E CK ( MF )

CO L H D G ( ' B I N '

' NO . ' )

A *
A

OR DD A T

/0

CU S T Y P

/0

T E X T ( ' I N T R OD U C I D O
DE

A
A

E L

P E D I DO+

F E CHA ' )

R A NG E ( 1

5 )

CO L H D G ( ' C L I E N '

T E X T ( ' T I PO

3=B U S

' T I PO ' )

CL I EN T E

4=PV T

1 = GO B

2 = P L AN

5 =O T ' )

A *
A

S TA T E

CH E CK ( MF )

CO L H D G ( ' P R O V I NC I A ' )

A *
A *
A

AC T M T H

/0

CO L H D G ( ' M E S '
T E X T ( ' ME S

' CO N T ' )

CON T A B L E

DE

VEN TA ' )

A *
A

AC T Y R

/0

CO L H D G ( ' A O '
T E X T ( ' A O

OR D E R N

L I N N UM

' CO N T ' )

CON T A B L E

DE

VEN TA ' )

Figura 71 (Parte 1 de 3). Especificaciones de Descripcin de Datos para un Programa de Consulta de Pedidos

Captulo 8. Archivos Transaccin

217

AS /400 E S P EC IF ICA C IO N E S D E D E S C RIP CIO N D E D ATO S


International Business Machines

de Gra bacin

A* *

10

11

12

13

14

15

16

17

/
O R D I N QD

18

19

20

21

22

23

24

25

26

R E V I S I ON
R

27

28

29

DE

Tipo Datos/Desplazamiento Teclado

Indicador

No (N)

Indicador

No (N)

Indicador
9

Lo ngit ud

Referencia ( R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

N o mbr e

30

31

32

33

34

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

Nombre Condicin

D ecimales

And /Or/Coment. (A/O/*)

Tipo de Formulario

Secuencia

No (N)

N mero de

Pg ina

37

38

P E D I DO

Funcione s

Lnea

39

40

41

Pos

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

/0

1 /0

Q T Y OR D

/0

D E SCR P

/
30

1 /0
1 /0

1 4 T E X T ( ' D E S C R I P C I ON

P R I CE

1 /0

4 6 T E X T ( ' PR EC I O

E X T ENS

1 /0

5 6 E D T CD E ( J )

2 T E X T ( ' N UM E R O

A
A

S UBC T L 1

66

X ' )

S F LCL R

57

S F LDSP

L OC K

Q T Y OR D

ROL L UP ( 9 7
CA 1 2 ( 9 8

S E TOF F ( 5 7

' S U B A R C H I VO

S E TOF F ( 5 8

' D E S AC = V I S U .

B OR R A R

A
A

OR D E R N

5Y

/0 B

' CO N T I N U A R

' F I N

DE

P E D I DO

2 ' P E D I DO '

8 T E X T ( ' N UM E R O

79

80

P E D I DO

E R RMSG ( ' S I N

L I NEA

62

E R R M S G ( ' NO

CL I EN T E

4
OR D D A T

CU S T

/0

V I S UAL I Z . ' )
DE

P AN T A L L A ' )

S UBC T L 1

S E

P AR A

NO

E NCON T R AD O ' 6 1 )

P AR A

P E D I DO ' 4 7 )

E NCON T R O
E S T E

R EG I S T RO

P E D I DO '

7 T E X T ( ' I N T R OD U C I D O

P E D I DO

DE

2 ' CL I

9 T E X T ( ' N UM E R O

DE

CL I ENT E ' )

DE

CL I ENT E ' )

N AM E

25

1 6 T E X T ( ' N OM B R E

ADD R

20

1 6 T E X T ( ' D I R E CC I ON

DE

C I T Y

20

1 6 T E X T ( ' C I UD AD

CL I ENT E ' )

S TAT E

Z I P

O R D AM T

DE

1 6 T E X T ( ' P R OV I NC I A

3 1 T E X T ( ' C OD I GO

4 4 ' TOTAL '

5 1 T E X T ( ' CA N T I D AD

4 4 ' P R OV I NC I A '

F E CHA ' )

# '

/0

DE

6 2 )

2 ' F E CHA '

AC = +

P E D I DO ' )

E R R M S G ( ' N UM

47

DE

CL I E N T E ' )
CL I E N T E ' )

POS T AL ' )
TOTAL

DE L

P E D I DO

EN+

DO L A R E S ' )

A
S T S OR D

12

S T S OP N

12

A
A
C U S OR D

15

5 1

4 4 ' AB I E R TO '

5 1

4 4 ' P E D I DO

5 9 T E X T ( ' N UM E R O

PRA

A
S HP V I A

15

P R T DA T

A
/0

DE

DE

P E D I DO

4 4 ' ME D I O

5 9 T E X T ( ' I N S T R U CC I ON E S

4 4 ' F E CHA

5 7 T E X T ( ' I MP R E S O

2 9 ' F AC T U R A '

C OM

3 8 T E X T ( ' N UM E R O

DE

E NV I O ' )

I MP R E S O '

/0

7
7

6 4 ' ME S '

/0

6 8 T E X T ( ' ME S

7 2 ' A O '

AC T Y R

/0

7 7 T E X T ( ' A O

DE

E NV I O '

DE

I N V N UM

CL I EN T E '

CL I ENT E ' )

AC T M T H

78

E X I S T ENT E '

77

S U B A R C H I VO ' )

2 ' CON S U L T A

6 1

76

P R OG R AM A ' )

75

N4 5

74

DE +

AON 4 7

73

S F L E ND
OV E R L A Y

72

S F L P AG ( 1 4 )
57

71

S F L S I Z ( 57 )

70

S F L D S PC T L

69

I T EM ' )

V A L OR

58

68

P ED I DA ' )

T E X T ( ' CA L CU L O

N5 8

67

S F LCT L ( S UB 1 )

65

VENTA ' )

P E D I DO

64

AR T I CU L O ' )

9 T E X T ( ' CA N T I D AD

A
R

63

S F L

62

E X I S T ENT E

S UB 1
I T EM

de

Ub icacin

Impreso en Espaa

Descripcin

Tecla

Fec ha

Condicionamiento

Signo

Instrucciones

Posiciones

Ar c hiv o
Programador

GX21-9891-0 UM/050*

*E l nm ero de hojas por re a de relle no puede variar ligeram ente .

P E D I DO
DE

DE

F ECHA ' )

F AC T U R A ' )

CON T A B L E

DE

VENTA ' )

CON T A B L E

DE

VENTA ' )

2 ' I T EM '

1 4 ' D E S C R I P C I ON

8 ' CAN T '

4 6 ' PR EC I O '

5 5 ' CA L CU L O '

I T EM '

Figura 71 (Parte 2 de 3). Especificaciones de Descripcin de Datos para un Programa de Consulta de Pedidos

218

COBOL/400 Gua del usuario

A S /4 00 E S P E CI FIC AC IO N E S D E DE S CR IP C IO N D E D ATO S
International Business Machines

A* *
A

10

11

12

13

14

15

16

17

F I S I CO

18

19

20

21

22

23

24

25

OR D HD R P
R

26

27

28

29

30

31

32

33

34

Tipo Datos/Desp lazamien to Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

N om b re

35

36

37

38

A R C H I VO

OR D HD R
CU S T

OR D E R N

OR DD A T

C U S OR D

15

Funciones

Lnea

39

DE

40

41

Pos

42

43

44

45

46

47

48

49

CAB E C E R A

50

51

52

DE

53

54

55

56

57

58

59

S HPV I A

15

OR D S T S

O P R N AM

1 /0

O R D AM T

/0 2

CU S T Y P

/0 /0
/0 /0
/0 /0
/0 /0

T E X T ( ' N UM E R O
T E X T ( ' F E CHA

61

62

63

/0 /0

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

P E D I DO ' )

DE

CL I EN T E ' )
P E D I DO ' )

DE

P E D I DO

P E D I DO ' )

COM P R A

CL I EN T E ' )

T E X T ( ' E S T ADO
4RDY

5PR T

P E D I DO

DE

E NV I O ' )

1PCS

2CN T

3CHK +

6 P CK ' )

T E X T ( ' OP E R ADOR

65

DE

T E X T ( ' I N S T R U CC I ON E S

64

CA B E C E R A

I N T R OD U C C I O N

T E X T ( ' N UM E R O
DE

60

P E D I DO

T E X T ( ' N UM E R O
/0 /0
/0 /0

QU E

I N T R OD U J O

P ED ' )

A
A

T E X T ( ' I MP OR T E
EN

A
A

I N V N UM

P R T DA T

OP N S T S

TOT L I N

AC T M T H

AC T Y R

S TAT E

AM P A I D

P E D I DO+

CL I ENT E

4=PV T

T E X T ( ' E S T

1 = GO V

2 = S CH

5 =O T ' )

T E X T ( ' N UM E R O
T E X T ( ' F E CHA
2 =C E R R AR

DE

DOL AR E S ' )

T E X T ( ' T I PO
3=BUS

de

Ubicacin

T E X T ( ' R EG I S T RO

Pgina

Tecla

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

Nombre Co ndicin

Impreso en Espaa

Descripcin

D ecimales

And/Or/Coment. (A/O/*)

Tipo de Formula rio

Secuencia

No (N)

N mero de

de Grabacin

Fecha

Condicionamiento

Signo

Instrucciones

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nm e ro de hojas por rea de re lleno puede variar lige ram ente .

DE

F AC T U R A ' )

I MP R E S I ON

AP E R T UR A

DE

P ED I D

P E D I DO ' )
1 =AB R I R +

3 = C A NC E L A R ' )

/0 /0
/0 /0
/0 /0

T E X T ( ' TOTAL

I T EMS

L I NEA

DE

T E X T ( ' ME S

CON T A B L E

DE

VENTA ' )

P E D I DO ' )

T E X T ( ' A O

CON T A B L E

DE

VENTA ' )

/0 2

T E X T ( ' I MP OR T E

T E X T ( ' P R OV I NC I A ' )
TOTAL

P AG A D O ' )

OR D E R N

A
A
A
A
A
A
A
A
A

Figura 71 (Parte 3 de 3). Especificaciones de Descripcin de Datos para un Programa de Consulta de Pedidos

Captulo 8. Archivos Transaccin

219

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
XMPLE773.
3\
EJEMPLO PROG. DE CONSULTA DE PEDIDOS
3 4 AUTHOR.
PROGRAMMER NAME.
4 5 INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 6 DATE-WRITTEN. 12/22/88.
8 8 DATE-COMPILED. 5/24/94 13:29:54
.
7 8 ENVIRONMENT DIVISION.
8 9 CONFIGURATION SECTION.
9 1 SOURCE-COMPUTER. IBM-AS4.
1 11 OBJECT-COMPUTER. IBM-AS4.
11 12 INPUT-OUTPUT SECTION.
12 13 FILE-CONTROL.
13 14
SELECT ORDER-HEADER-FILE
14 15
ASSIGN TO DATABASE-ORDHDRP
15 16
ORGANIZATION IS INDEXED
16 17
ACCESS MODE IS RANDOM
17 18
RECORD KEY IS ORDERN OF ORDER-HEADER-RECORD.
18 19
SELECT ORDER-DETAIL-FILE
19 2
ASSIGN TO DATABASE-ORDDTLP
2 21
ORGANIZATION IS INDEXED
21 22
ACCESS IS DYNAMIC
22 23
RECORD KEY IS ORDER-DETAIL-RECORD-KEY.
23 24
SELECT CUSTOMER-MASTER-FILE
24 25
ASSIGN TO DATABASE-CUSMSTP
25 26
ORGANIZATION IS INDEXED
26 27
ACCESS IS RANDOM
27 28
RECORD KEY IS CUST OF CUSTOMER-MASTER-RECORD.
28 29
SELECT EXISTING-ORDER-DISPLAY-FILE
29 3
ASSIGN TO WORKSTATION-ORDINQD
3 31
ORGANIZATION IS TRANSACTION
31 32
ACCESS IS DYNAMIC
32 33
RELATIVE KEY IS SUBFILE-RECORD-NUMBER
33 34
FILE STATUS IS STATUS-CODE-ONE.
34 35 DATA DIVISION.
35 36 FILE SECTION.
36 37 FD ORDER-HEADER-FILE
37 38
LABEL RECORDS ARE STANDARD.
38 39 1 ORDER-HEADER-RECORD.
39 4
COPY DDS-ORDHDR OF ORDHDRP.
+1\
FORMATO E-S:ORDHDR
DESDE ORDHDRP DE BIBLIOTECA XMPLIB
ORDHDR
+2\
REGISTRO CABECERA PEDIDO
ORDHDR
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO ORDHDR
ORDHDR
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
ORDHDR
+5\
1
ORDERN
ASCENDENTE SIGNO
NO
ORDHDR
4 +6
5 ORDHDR.
ORDHDR
41 +7
6 CUST
PIC X(5).
ORDHDR
+8\
NMERO CLIENTE
ORDHDR
42 +9
6 ORDERN
PIC S9(5)
COMP-3.
ORDHDR
+1\
NMERO PEDIDO
ORDHDR
43 +11
6 ORDDAT
PIC S9(6)
COMP-3.
ORDHDR
+12\
SE ENTR FECHA PEDIDO
ORDHDR
44 +13
6 CUSORD
PIC X(15).
ORDHDR
+14\
NMERO PEDIDO COMPRA CLIENTE
ORDHDR
45 +15
6 SHPVIA
PIC X(15).
ORDHDR
+16\
INSTRUCCIONES ENVO
ORDHDR
46 +17
6 ORDSTS
PIC S9(1)
COMP-3.
ORDHDR
+18\
ESTADO PEDIDO 1PEND 2CONT 3COM 4LIS 5IMP 6ENP
ORDHDR
47 +19
6 OPRNAM
PIC X(1).
ORDHDR
+2\
NOMBRE OPERADOR QUE ENTR EL PEDIDO
ORDHDR
48 +21
6 ORDAMT
PIC S9(6)V9(2)
COMP-3.
ORDHDR
+22\
TOTAL SUMA PESETAS DEL PEDIDO
ORDHDR
49 +23
6 CUSTYP
PIC S9(1)
COMP-3.
ORDHDR
+24\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
ORDHDR
5 +25
6 INVNUM
PIC S9(5)
COMP-3.
ORDHDR
+26\
NMERO FACTURA
ORDHDR
51 +27
6 PRTDAT
PIC S9(6)
COMP-3.
ORDHDR
+28\
FECHA IMPRESIN PEDIDO
ORDHDR
52 +29
6 OPNSTS
PIC S9(1)
COMP-3.
ORDHDR
+3\
EST.PEDIDO ABIERTO 1=ABIERTO 2= CERRADO 3=CANCELAD.ORDHDR
53 +31
6 TOTLIN
PIC S9(3)
COMP-3.
ORDHDR
+32\
TOTAL LNEAS TEMS EN PEDIDO
ORDHDR
54 +33
6 ACTMTH
PIC S9(2)
COMP-3.
ORDHDR
+34\
MES CONTABLE DE VENTA
ORDHDR
55 +35
6 ACTYR
PIC S9(2)
COMP-3.
ORDHDR
+36\
AO CONTABLE DE VENTA
ORDHDR

Figura 72 (Parte 1 de 7). Ejemplo de un Programa de Consulta de Pedidos

220

COBOL/400 Gua del usuario

FECH/CAM
1/25/94
3/22/94
3/22/94
1/25/94
1/25/94
1/25/94
3/1/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
3/21/94
1/25/94
1/26/94
1/26/94
1/25/94
3/21/94
1/25/94
1/25/94
1/27/94
1/25/94
1/25/94
1/25/94
1/25/94
1/26/94
1/25/94
3/23/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
1/25/94
3/21/94

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
56 +37
6 STATE
PIC X(2).
+38\
PROVINCIA
57 +39
6 AMPAID
PIC S9(6)V9(2)
COMP-3.
+4\
TOTAL SUMA PESETAS PAGADAS
41
58 42 FD ORDER-DETAIL-FILE
59 43
LABEL RECORDS ARE STANDARD.
6 44 1 ORDER-DETAIL-RECORD.
61 45
COPY DDS-ORDDTL OF ORDDTLP.
+1\
FORMATO E-S:ORDDTL
DESDE ORDDTLP DE BIBLIOTECA XMPLIB
+2\
REGISTRO DETALLE PEDIDO
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO ORDDTL
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
+5\
1
ORDERN
ASCENDENTE SIGNO
NO
+6\
2
LINNUM
ASCENDENTE SIGNO
NO
62 +7
5 ORDDTL.
63 +8
6 CUST
PIC X(5).
+9\
NMERO CLIENTE
64 +1
6 ORDERN
PIC S9(5)
COMP-3.
+11\
NMERO PEDIDO
65 +12
6 LINNUM
PIC S9(3)
COMP-3.
+13\
NMERO LNEA DE LNEA DE PEDIDO
66 +14
6 ITEM
PIC S9(5)
COMP-3.
+15\
NMERO TEM
67 +16
6 QTYORD
PIC S9(3)
COMP-3.
+17\
CANTIDAD PEDIDA
68 +18
6 DESCRP
PIC X(3).
+19\
DESCRIPCIN TEM
69 +2
6 PRICE
PIC S9(4)V9(2)
COMP-3.
+21\
PRECIO DE VENTA
7 +22
6 EXTENS
PIC S9(6)V9(2)
COMP-3.
+23\
VALOR CALCULADO: CANTIDAD PEDIDA X PRECIO
71 +24
6 WHSLOC
PIC X(3).
+25\
BIN NM.
72 +26
6 ORDDAT
PIC S9(6)
COMP-3.
+27\
SE ENTR FECHA PEDIDO
73 +28
6 CUSTYP
PIC S9(1)
COMP-3.
+29\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
74 +3
6 STATE
PIC X(2).
+31\
PROVINCIA
75 +32
6 ACTMTH
PIC S9(2)
COMP-3.
+33\
MES CONTABLE DE VENTA
76 +34
6 ACTYR
PIC S9(2)
COMP-3.
+35\
AO CONTABLE DE VENTA
77 46 66 ORDER-DETAIL-RECORD-KEY RENAMES ORDERN THRU LINNUM.
47
78 48 FD CUSTOMER-MASTER-FILE
79 49
LABEL RECORDS ARE STANDARD.
8 5 1 CUSTOMER-MASTER-RECORD.
81 51
COPY DDS-CUSMST OF CUSMSTP.
+1\
FORMATO E-S:CUSMST
DESDE CUSMSTP DE BIBLIOTECA XMPLIB
+2\
REGISTRO MAESTRO CLIENTES
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO CUSMST
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
+5\
1
CUST
ASCENDENTE
AN
NO
82 +6
5 CUSMST.
83 +7
6 CUST
PIC X(5).
+8\
NMERO CLIENTE
84 +9
6 NAME
PIC X(25).
+1\
NOMBRE CLIENTE
85 +11
6 ADDR
PIC X(2).
+12\
DIRECCIN CLIENTE
86 +13
6 CITY
PIC X(2).
+14\
CIUDAD CLIENTE
87 +15
6 STATE
PIC X(2).
+16\
PROVINCIA
88 +17
6 ZIP
PIC S9(5)
COMP-3.
+18\
CDIGO POSTAL
89 +19
6 SRHCOD
PIC X(6).
+2\
CDIGO BSQUEDA NMERO CLIENTE
9 +21
6 CUSTYP
PIC S9(1)
COMP-3.
+22\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
91 +23
6 ARBAL
PIC S9(6)V9(2)
COMP-3.
+24\
SALDO CUENTAS PEND.
92 +25
6 ORDBAL
PIC S9(6)V9(2)
COMP-3.

NOMCOPIA
ORDHDR
ORDHDR
ORDHDR
ORDHDR

FECH/CAM

ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL
ORDDTL

CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

Figura 72 (Parte 2 de 7). Ejemplo de un Programa de Consulta de Pedidos

Captulo 8. Archivos Transaccin

221

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
+26\
CANTIDAD C/C EN ARCH. PEDIDOS
93 +27
6 LSTAMT
PIC S9(6)V9(2)
COMP-3.
+28\
ULTIMA CANTIDAD PAGADA EN C/C
94 +29
6 LSTDAT
PIC S9(6)
COMP-3.
+3\
ULTIMA FECHA PAGADA EN C/C
95 +31
6 CRDLMT
PIC S9(6)V9(2)
COMP-3.
+32\
LMITE CRDITO CLIENTE
96 +33
6 SLSYR
PIC S9(8)V9(2)
COMP-3.
+34\
VENTAS CLIENTE ESTE AO
97 +35
6 SLSLYR
PIC S9(8)V9(2)
COMP-3.
+36\
VENTAS CLIENTE AO PASADO
52
98 53 FD EXISTING-ORDER-DISPLAY-FILE
99 54
LABEL RECORDS ARE OMITTED.
1 55 1 EXISTING-ORDER-DISPLAY-RECORD.
11 56
COPY DDS-ALL-FORMATS OF ORDINQD.
12 +1
5 ORDINQD-RECORD PIC X(171).
+2\
FORMATO E-S:SUB1 DESDE ARCHIVO ORDINQD
DE BIBLIOTECA XMPLIB
+3\
13 +4
5 SUB1
REDEFINES ORDINQD-RECORD.
14 +5
6 ITEM
PIC S9(5).
+6\
NMERO TEM
15 +7
6 QTYORD
PIC S9(3).
+8\
CANTIDAD PEDIDA
16 +9
6 DESCRP
PIC X(3).
+1\
DESCRIPCIN TEM
17 +11
6 PRICE
PIC S9(4)V9(2).
+12\
PRECIO DE VENTA
18 +13
6 EXTENS
PIC S9(6)V9(2).
+14\
VALOR CALCULADO: CANTIDAD PEDIDA X PRECIO
+15\ FORMATO ENTRADA:SUBCTL1
DESDE ARCHIVO ORDINQD
DE BIBLIOTECA XMPLIB
+16\
19 +17
5 SUBCTL1-I
REDEFINES ORDINQD-RECORD.
11 +18
6 SUBCTL1-I-INDIC.
111 +19
7 IN97
PIC 1 INDIC 97.
+2\
CONTINUAR VISUALIZACIN
112 +21
7 IN98
PIC 1 INDIC 98.
+22\
FIN DE PROGRAMA
113 +23
7 IN57
PIC 1 INDIC 57.
+24\
VISUALIZAR SUBARCHIVO
114 +25
7 IN58
PIC 1 INDIC 58.
+26\
DESACTIVADO=VISUALIZAR SUBCTLQ ACTIVADO=BORRAR SUBARCHIVO
115 +27
7 IN61
PIC 1 INDIC 61.
+28\
NO ENCONTRADO NMERO PEDIDO
116 +29
7 IN47
PIC 1 INDIC 47.
+3\
NO HAY LNEA PARA ESTE PEDIDO
117 +31
7 IN62
PIC 1 INDIC 62.
+32\
NO HAY REGISTRO CLIENTE
118 +33
6 ORDERN
PIC S9(5).
+34\
NMERO PEDIDO
+35\FORMATO SALIDA:SUBCTL1
DESDE ARCHIVO ORDINQD
DE BIBLIOTECA XMPLIB
+36\
119 +37
5 SUBCTL1-O
REDEFINES ORDINQD-RECORD.
12 +38
6 SUBCTL1-O-INDIC.
121 +39
7 IN58
PIC 1 INDIC 58.
+4\
DESACTIVADO=VISUALIZAR SUBCTL1 ON=BORRAR SUBARCHIVO
122 +41
7 IN57
PIC 1 INDIC 57.
+42\
VISUALIZAR SUBARCHIVO
123 +43
7 IN45
PIC 1 INDIC 45.
124 +44
7 IN47
PIC 1 INDIC 47.
+45\
NO HAY LNEA PARA ESTE PEDIDO
125 +46
7 IN61
PIC 1 INDIC 61.
+47\
NO ENCONTRADO NMERO PEDIDO
126 +48
7 IN62
PIC 1 INDIC 62.
+49\
NO HAY REGISTRO CLIENTE
127 +5
6 ORDERN
PIC S9(5).
+51\
NMERO PEDIDO
128 +52
6 ORDDAT
PIC S9(6).
+53\
SE ENTR FECHA PEDIDO
129 +54
6 CUST
PIC X(5).
+55\
NMERO CLIENTE
13 +56
6 NAME
PIC X(25).
+57\
NOMBRE CLIENTE
131 +58
6 ADDR
PIC X(2).
+59\
DIRECCIN CLIENTE
132 +6
6 CITY
PIC X(2).

Figura 72 (Parte 3 de 7). Ejemplo de un Programa de Consulta de Pedidos

222

COBOL/400 Gua del usuario

NOMCOPIA
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

FECH/CAM

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
+61\
CIUDAD CLIENTE
133 +62
6 STATE
PIC X(2).
+63\
PROVINCIA CLIENTE
134 +64
6 ZIP
PIC S9(5).
+65\
CDIGO POSTAL
135 +66
6 ORDAMT
PIC S9(6)V9(2).
+67\
IMPORTE TOTAL DEL PEDIDO
136 +68
6 STSORD
PIC X(12).
137 +69
6 STSOPN
PIC X(12).
138 +7
6 CUSORD
PIC X(15).
+71\
NMERO PEDIDO COMPRA CLIENTE
139 +72
6 SHPVIA
PIC X(15).
+73\
INSTRUCCIONES DE ENVO
14 +74
6 PRTDAT
PIC S9(6).
+75\
FECHA IMPRESIN PEDIDO
141 +76
6 INVNUM
PIC S9(5).
+77\
NMERO FACTURA
142 +78
6 ACTMTH
PIC S9(2).
+79\
MES CONTABLE DE VENTA
143 +8
6 ACTYR
PIC S9(2).
+81\
AO CONTABLE DE VENTA
57
144 58 WORKING-STORAGE SECTION.
145 59 1 EXISTING-ORDER-DISPLAY-KEY.
146 6
5 SUBFILE-RECORD-NUMBER
PIC 9(2)
147 61
VALUE ZERO.
62
148 63 1 ORDER-STATUS-COMMENT-VALUES.
149 64
5 FILLER
PIC X(12)
15 65
VALUE "1-IN PROCESS".
151 66
5 FILLER
PIC X(12)
152 67
VALUE "2-CONTINUED ".
153 68
5 FILLER
PIC X(12)
154 69
VALUE "3-CREDIT CHK".
155 7
5 FILLER
PIC X(12)
156 71
VALUE "4-READY PRT ".
157 72
5 FILLER
PIC X(12)
158 73
VALUE "5-PRINTED
".
159 74
5 FILLER
PIC X(12)
16 75
VALUE "6-PICKED
".
161 76
5 FILLER
PIC X(12)
162 77
VALUE "7-INVOICED ".
163 78
5 FILLER
PIC X(12)
164 79
VALUE "8-INVALID
".
165 8
5 FILLER
PIC X(12)
166 81
VALUE "9-CANCELED ".
82
167 83 1 ORDER-STATUS-COMMENT-TABLE
168 84
REDEFINES ORDER-STATUS-COMMENT-VALUES.
169 85
5 ORDER-STATUS OCCURS 9 TIMES.
17 86
1 ORDER-STATUS-COMMENT
PIC X(12).
87
171 88 1 OPEN-STATUS-COMMENT-VALUES.
172 89
5 FILLER
PIC X(12)
173 9
VALUE "1-OPEN
".
174 91
5 FILLER
PIC X(12)
175 92
VALUE "2-CLOSED
".
176 93
5 FILLER
PIC X(12)
177 94
VALUE "3-CANCELED ".
95
178 96 1 OPEN-STATUS-COMMENT-TABLE
179 97
REDEFINES OPEN-STATUS-COMMENT-VALUES.
18 98
5 OPEN-STATUS OCCURS 3 TIMES.
181 99
1 OPEN-STATUS-COMMENT
PIC X(12).
1
182 11 1 ERRHDL-PARAMETERS.
183 12
5 STATUS-CODE-ONE
PIC X(2).
184 13
88 SUBFILE-IS-FULL
VALUE "9M".
14
185 15 1 ERRPGM-PARAMETERS.
186 16
5 DISPLAY-PARAMETER
PIC X(8)
187 17
VALUE "ORD22D ".
188 18
5 DUMMY-ONE
PIC X(6)
189 19
VALUE SPACES.
19 11
5 DUMMY-TWO
PIC X(8)
191 111
VALUE SPACES.

NOMCOPIA
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

FECH/CAM

Figura 72 (Parte 4 de 7). Ejemplo de un Programa de Consulta de Pedidos

Captulo 8. Archivos Transaccin

223

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
192 112
5 STATUS-CODE-TWO.
193 113
1 PRIMARY
PIC X(1).
194 114
1 SECONDARY
PIC X(1).
195 115
1 FILLER
PIC X(5)
196 116
VALUE SPACES.
117
197 118 1 SWITCH-AREA.
198 119
5 SW1
PIC 1.
199 12
88 NO-MORE-DETAIL-LINE-ITEMS
VALUE B"1".
2 121
88 MORE-DETAIL-LINE-ITEMS-EXIST
VALUE B"".
21 122
5 SW2
PIC 1.
22 123
88 WRITE-DISPLAY
VALUE B"1".
23 124
88 READ-DISPLAY
VALUE B"".
24 125
5 SW3
PIC 1.
25 126
88 SUBCTL1-FORMAT
VALUE B"1".
26 127
88 NOT-SUBCTL1-FORMAT
VALUE B"".
27 128
5 SW4
PIC 1.
28 129
88 SUB1-FORMAT
VALUE B"1".
29 13
88 NOT-SUB1-FORMAT
VALUE B"".
131
21 132 1 INDICATOR-AREA.
211 133
5 IN98
PIC 1 INDIC 98.
212 134
88 END-OF-EXISTING-ORDER-INQUIRY VALUE B"1".
213 135
5 IN97
PIC 1 INDIC 97.
214 136
88 CONTINUE-DETAIL-LINES-DISPLAY VALUE B"1".
215 137
5 IN62
PIC 1 INDIC 62.
216 138
88 CUSTOMER-NOT-FOUND
VALUE B"1".
217 139
88 CUSTOMER-EXIST
VALUE B"".
218 14
5 IN61
PIC 1 INDIC 61.
219 141
88 ORDER-NOT-FOUND
VALUE B"1".
22 142
88 ORDER-EXIST
VALUE B"".
221 143
5 IN58
PIC 1 INDIC 58.
222 144
88 CLEAR-SUBFILE
VALUE B"1".
223 145
88 DISPLAY-SUBFILE-CONTROL
VALUE B"".
224 146
5 IN57
PIC 1 INDIC 57.
225 147
88 DISPLAY-SUBFILE
VALUE B"1".
226 148
5 IN47
PIC 1 INDIC 47.
227 149
88 NO-DETAIL-LINES-FOR-ORDER
VALUE B"1".
228 15
88 DETAIL-LINES-FOR-ORDER-EXIST
VALUE B"".
229 151
5 IN45
PIC 1 INDIC 45.
23 152
88 END-OF-ORDER
VALUE B"1".
153
231 154 PROCEDURE DIVISION.
155
156 DECLARATIVES.
157 TRANSACTION-ERROR SECTION.
158
USE AFTER STANDARD ERROR PROCEDURE
159
EXISTING-ORDER-DISPLAY-FILE.
16 WORK-STATION-ERROR-HANDLER.
232 161
IF SUBFILE-IS-FULL THEN
162
NEXT SENTENCE
163
ELSE
233 164
DISPLAY "WORK-STATION ERROR"
STATUS-CODE-ONE.
165 END DECLARATIVES.
166
167 INQUIRY-INTO-EXISTING-ORDER SECTION.
168 MAINLINE-ROUTINE.
234 169
PERFORM SET-UP-ROUTINE.
235 17
PERFORM EXISTING-ORDER-INQUIRY
171
UNTIL END-OF-EXISTING-ORDER-INQUIRY.
236 172
PERFORM CLEAN-UP-ROUTINE.
173
174 SET-UP-ROUTINE.
237 175
OPEN INPUT ORDER-HEADER-FILE
176
ORDER-DETAIL-FILE
177
CUSTOMER-MASTER-FILE
178
I-O
EXISTING-ORDER-DISPLAY-FILE.
238 179
MOVE SPACES TO
CUST
OF SUBCTL1-O
18
NAME
OF SUBCTL1-O
181
ADDR
OF SUBCTL1-O
182
CITY
OF SUBCTL1-O
183
STATE OF SUBCTL1-O
184
STSORD OF SUBCTL1-O
185
STSOPN OF SUBCTL1-O
186
CUSORD OF SUBCTL1-O.

Figura 72 (Parte 5 de 7). Ejemplo de un Programa de Consulta de Pedidos

224

COBOL/400 Gua del usuario

NOMCOPIA

FECH/CAM

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
239 187
MOVE ZEROS TO
ORDERN OF SUBCTL1-O
188
ORDDAT OF SUBCTL1-O
189
ZIP
OF SUBCTL1-O
19
ORDAMT OF SUBCTL1-O
191
PRTDAT OF SUBCTL1-O
192
INVNUM OF SUBCTL1-O
193
ACTMTH OF SUBCTL1-O
194
ACTYR OF SUBCTL1-O.
24 195
MOVE ALL B'' TO INDICATOR-AREA.
241 196
SET READ-DISPLAY
197
NOT-SUBCTL1-FORMAT
198
NOT-SUB1-FORMAT TO TRUE.
242 199
MOVE CORR INDICATOR-AREA TO SUBCTL1-O-INDIC.
243 2
WRITE EXISTING-ORDER-DISPLAY-RECORD FORMAT IS "SUBCTL1".
244 21
READ EXISTING-ORDER-DISPLAY-FILE RECORD.
245 22
MOVE CORR SUBCTL1-I-INDIC TO INDICATOR-AREA.
23
24 EXISTING-ORDER-INQUIRY.
246 25
IF CONTINUE-DETAIL-LINES-DISPLAY THEN
247 26
PERFORM READ-NEXT-ORDER-DETAIL-RECORD
248 27
IF MORE-DETAIL-LINE-ITEMS-EXIST THEN
249 28
IF ORDERN OF ORDER-DETAIL-RECORD IS NOT EQUAL TO
29
ORDERN OF ORDER-HEADER-RECORD THEN
25 21
SET DISPLAY-SUBFILE TO TRUE
251 211
SET NO-DETAIL-LINES-FOR-ORDER TO TRUE
212
ELSE
252 213
PERFORM SUBFILE-SET-UP
214
ELSE
253 215
SET DISPLAY-SUBFILE TO TRUE
254 216
SET NO-DETAIL-LINES-FOR-ORDER TO TRUE
217
ELSE
255 218
PERFORM ORDER-NUMBER-VALIDATION.
256 219
MOVE CORR INDICATOR-AREA TO SUBCTL1-O-INDIC.
257 22
SET WRITE-DISPLAY TO TRUE.
258 221
SET SUBCTL1-FORMAT TO TRUE.
259 222
WRITE EXISTING-ORDER-DISPLAY-RECORD FORMAT IS "SUBCTL1".
26 223
READ EXISTING-ORDER-DISPLAY-FILE RECORD.
261 224
MOVE CORR SUBCTL1-I-INDIC TO INDICATOR-AREA.
225 ORDER-NUMBER-VALIDATION.
262 226
PERFORM READ-ORDER-HEADER-FILE.
263 227
IF ORDER-EXIST THEN
264 228
PERFORM READ-CUSTOMER-MASTER-FILE
265 229
IF CUSTOMER-EXIST THEN
266 23
PERFORM READ-FIRST-ORDER-DETAIL-RECORD
267 231
IF DETAIL-LINES-FOR-ORDER-EXIST THEN
268 232
PERFORM SUBFILE-SET-UP
233
ELSE
234
NEXT SENTENCE
235
ELSE
236
NEXT SENTENCE
237
ELSE
238
NEXT SENTENCE.
239 READ-ORDER-HEADER-FILE.
269 24
MOVE ORDERN OF SUBCTL1-I OF EXISTING-ORDER-DISPLAY-RECORD
241
TO ORDERN OF ORDER-HEADER-RECORD.
27 242
READ ORDER-HEADER-FILE
271 243
INVALID KEY SET ORDER-NOT-FOUND TO TRUE.
244 READ-CUSTOMER-MASTER-FILE.
272 245
MOVE CUST OF ORDER-HEADER-RECORD
246
TO CUST OF CUSTOMER-MASTER-RECORD.
273 247
READ CUSTOMER-MASTER-FILE
274 248
INVALID KEY SET CUSTOMER-NOT-FOUND TO TRUE.
249 READ-FIRST-ORDER-DETAIL-RECORD.
275 25
MOVE ORDERN OF ORDER-HEADER-RECORD
251
TO ORDERN OF ORDER-DETAIL-RECORD.
276 252
MOVE 1 TO LINNUM OF ORDER-DETAIL-RECORD.
277 253
READ ORDER-DETAIL-FILE
278 254
INVALID KEY SET NO-DETAIL-LINES-FOR-ORDER TO TRUE.
255 SUBFILE-SET-UP.
279 256
SET CLEAR-SUBFILE TO TRUE.
28 257
MOVE CORR INDICATOR-AREA TO SUBCTL1-O-INDIC.
281 258
SET WRITE-DISPLAY TO TRUE.
282 259
SET SUBCTL1-FORMAT TO TRUE.
283 26
WRITE EXISTING-ORDER-DISPLAY-RECORD FORMAT IS "SUBCTL1".
284 261
SET DISPLAY-SUBFILE-CONTROL TO TRUE.

NOMCOPIA

FECH/CAM

Figura 72 (Parte 6 de 7). Ejemplo de un Programa de Consulta de Pedidos

Captulo 8. Archivos Transaccin

225

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
285 262
PERFORM BUILD-DISPLAY-SUBFILE
263
UNTIL NO-MORE-DETAIL-LINE-ITEMS
264
OR SUBFILE-IS-FULL.
286 265
MOVE CORR ORDHDR OF ORDER-HEADER-RECORD
266
TO SUBCTL1-O OF EXISTING-ORDER-DISPLAY-RECORD.
287 267
MOVE CORR CUSMST OF CUSTOMER-MASTER-RECORD
268
TO SUBCTL1-O OF EXISTING-ORDER-DISPLAY-RECORD.
288 269
MOVE ORDER-STATUS(ORDSTS) TO STSORD.
289 27
MOVE OPEN-STATUS(OPNSTS) TO STSOPN.
29 271
SET MORE-DETAIL-LINE-ITEMS-EXIST TO TRUE.
291 272
MOVE ZEROS TO SUBFILE-RECORD-NUMBER.
273 BUILD-DISPLAY-SUBFILE.
292 274
MOVE CORR ORDDTL OF ORDER-DETAIL-RECORD
275
TO SUB1 OF EXISTING-ORDER-DISPLAY-RECORD.
293 276
SET WRITE-DISPLAY TO TRUE.
294 277
SET SUB1-FORMAT TO TRUE.
295 278
ADD 1 TO SUBFILE-RECORD-NUMBER.
296 279
WRITE SUBFILE EXISTING-ORDER-DISPLAY-RECORD FORMAT IS "SUB1".
297 28
IF SUBFILE-IS-FULL THEN
298 281
SET DISPLAY-SUBFILE TO TRUE
282
ELSE
299 283
PERFORM READ-NEXT-ORDER-DETAIL-RECORD
3 284
IF NO-MORE-DETAIL-LINE-ITEMS THEN
285
NEXT SENTENCE
286
ELSE
31 287
IF ORDERN OF ORDER-DETAIL-RECORD IS NOT EQUAL TO
288
ORDERN OF ORDER-HEADER-RECORD THEN
32 289
SET DISPLAY-SUBFILE TO TRUE
33 29
SET NO-MORE-DETAIL-LINE-ITEMS TO TRUE
291
ELSE
292
NEXT SENTENCE.
293 READ-NEXT-ORDER-DETAIL-RECORD.
34 294
READ ORDER-DETAIL-FILE NEXT RECORD
35 295
AT END SET DISPLAY-SUBFILE TO TRUE
36 296
SET NO-MORE-DETAIL-LINE-ITEMS TO TRUE.
297 CLEAN-UP-ROUTINE.
37 298
CLOSE
ORDER-HEADER-FILE
299
ORDER-DETAIL-FILE
3
CUSTOMER-MASTER-FILE
31
EXISTING-ORDER-DISPLAY-FILE.
38 32
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E \ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 72 (Parte 7 de 7). Ejemplo de un Programa de Consulta de Pedidos

Esta es la pantalla inicial de solicitud de entrada de pedidos grabada para la


estacin de trabajo:

Entrada Pedido Existente


Pedido 124
Fecha
Cli #
Item

Cant

Factura
Descripcin Item

Total
Estado
Abierto
Pedido cliente
Medio envo
Fecha Impreso
Mes
Precio

Ao

Clculo

Esta pantalla aparece si existen registros de detalle del pedido para el cliente cuyo
nmero de pedido se ha entrado en la primera pantalla:

226

COBOL/400 Gua del usuario

Entrada Pedido Existente


Pedido 17924
Fecha 11587
Cli # 112
Item Cant
331 3
331 1
44529 4
44958 2
4612 1
4621 1
4792 2

ABC HARDWARE LTD.


123 ANYWHERE AVE.
TORONTO
ONT
M4K A
Factura 17924
Descripcin Item
TORQUE WRENCH 75LB 14 INCH
TORQUE WRENCH W/GAUGE 2 LB
WOOD CHISEL - 3 1/4
POWER DRILL 1/2 REV
WROUGHT IRON RAILING 4FTX6FT
WROUGHT IRON HAND RAIL 6FT
ESCUTCHEON BRASS 15X4 INCHES

Total 7426656
Estado
7-INVOICED
Abierto 2-CLOSED
Pedido cliente TESTCS179331I
Medio envo
TRUCKCO
Fecha impreso 82788
Mes 12 Ao 88
Precio Clculo
9115
273.45
15777
65.95
684
56.87
82
797.5
793
237.75
7178
77.35
44488
213.

Esta pantalla aparece si el archivo ORDHDRP no contiene ningn registro para el


nmero de pedido entrado en la primera pantalla:

Entrada Pedido Existente


Pedido 124
Fecha
Cli #
Item

Cant

Factura
Descripcin Item

Total
Estado
Abierto
Pedido cliente
Medio envo
Fecha Impreso
Mes
Precio

Ao

Clculo

No encontrado nmero de pedido

Un Programa de Actualizacin de Pagos


La Figura 74 en la pgina 231 muestra un ejemplo de un programa de actualizacin de pagos, PAYUPDT. Para las DDS relacionadas, consulte la Figura 73 en
la pgina 228. Para los ejemplos de pantallas asociadas, consulte la pgina 238.
Para las DDS correspondientes al archivo maestro de clientes, CUSMSTP, consulte la Figura 69 en la pgina 212.
En este ejemplo, se registran los pagos de los clientes. Se solicita al empleado que
entre uno o ms nmeros de clientes y la cantidad de dinero a abonar a cada
cuenta de los clientes. El programa comprueba el nmero de cliente y acepta
incondicionalmente cualquier pago para un cliente dado que tenga facturas pendientes de pago. Si la cantidad pagada por un cliente resulta excesiva, el
empleado tiene la opcin de aceptar o rechazar el pago. Si no existe ningn
registro del cliente, se emite un mensaje de error. Los pagos pueden entrarse
hasta que el empleado finalice el programa pulsando F12.

Captulo 8. Archivos Transaccin

227

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nm e ro

Signo

Archivo

de

hojas por rea

de

Impreso
re lleno

Descripcin

puede

U M / 0 5 0 *
en

Espaa

variar lige ram ente .

Pgina

de

Instrucciones
de Grabacin

1 0

1 2

1 3

1 4

1 5

L OG I C O

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

OR D HD R L
R

OR D HD R

2 6

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Longitud

Tipo Datos/Desp lazamien to Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

No (N)
1 1

Indicador

o
9

Indicador

Indicador

No (N)
8

A * *
A

Espec

(A/O/*)
7

N om b re

3 6

A R C H I VO

U t i l i z a c/i n

Nombre Co ndicin

D ecimales

And/Or/Coment.

Tipo

Secuencia

de Formula rio

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

D E

4 0

4 1

P os

4 2

4 3

4 4

4 5

4 6

4 7

P E D I DO S

4 8

4 9

5 0

D E

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

OR D HD R

P F I L E ( OR D HD R P )

A *
A

CU S T

I N V N UM

OR D E R N

OR DD A T

C U S OR D

S HP V I A

OR D S T S

O P R N AM

O R D AM T

CU S T Y P

P R T DA T

OP N S T S

T O T L

AC T M T H

I N

AC T Y R

S T A T E

AM P A I D

CU S T
I N V N UM

A
A
A
A
A
A
A
A
A
A
A
A
A

Figura 73 (Parte 1 de 3). Ejemplo de una Especificacin de Descripcin de Datos para un Programa de Actualizacin de Pagos

228

COBOL/400 Gua del usuario

7 6

7 7

7 8

7 9

8 0

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nm e ro

Signo

Archivo

de

hojas por rea

de

Impreso
re lleno

Descripcin

puede

U M / 0 5 0 *
en

Espaa

variar lige ram ente .

Pgina

de

Instrucciones
de Grabacin

1 0

A *

1 1

1 2

1 3

1 4

1 5

DD S

A *

Referencia (R)

Reservado

Nombre
1 7

1 8

1 9

2 0

P AR A

2 1

2 2

2 3

2 4

2 5

Longitud

2 6

2 7

2 8

A R C H I VO

AC T U A L I Z AC I ON

2 9

3 0

3 1

3 2

3 3

3 4

3 5

(b/O/I/B/H/M/N/P)

Tipo Datos/Desp lazamien to Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

N om b re

3 6

U t i l i z a c/i n

Nombre Co ndicin

D ecimales

And/Or/Coment.

Tipo

Secuencia

de Formula rio

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P A GO

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

P AN T A L /
L A/ P AY UPD T D

D I S P O S I T I VO
D E

P os

4 2

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

S U B F I L E 1

S F L

T E X T (

' S U B ARCH

P AR A

P AGO

4 T E X T (

' AC E P T A R

P A GO '

' * NO '

D E

CL I E N T E '

A *
A

AC P P M T

4 A

VA L U E S (

5 1

N 5 1

' * Y E S '

D S P A T R ( R I

MD T )

D S P A T R ( ND

P R )

A *
A

CU S T

1 5 T E X T (

' N UM E R O

5 2

D S P A T R ( R I )

5 3

D S P A T R ( ND )

5 4

D S P A T R ( P R )

D E

CL I E N T E ' )

A *
A

AM P A I D

/
0 2 B

2 4 T E X T (

'

I MP OR T E

P AG A D O '

CH E CK ( F E )

AU T O ( R AB )

CM P ( G T

/0 )

5 2

D S P A T R ( R I )

5 3

D S P A T R ( ND )

5 4

D S P A T R ( P R )

A *
A

ECPMSG

3 1A

3 7 T E X T (

' ME N S A J E

5 2

D S P A T R ( R I )

5 3

D S P A T R ( ND )

5 4

D S P A T R ( P R )

D E

E X C E P C I ON ' )

A *
A

OV R P M T

8 Y

2O

7 /0 T E X T (

' P A GO

E X C E S I VO ' )

E D T CD E ( 1 )

5 5

D S P A T R ( B L )

N 5 6

D S P A T R ( ND )

A *
A

S T S CD E

1A

T E X T (

' COD I GO

E S T ADO ' )

Figura 73 (Parte 2 de 3). Ejemplo de una Especificacin de Descripcin de Datos para un Programa de Actualizacin de Pagos

Captulo 8. Archivos Transaccin

229

G X 2 1 - 9 8 9 1 - 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
International

Business

Machines

*El nmero

Signo

Archivo

de hojas por rea

Impreso

U M / 0 5 0 *
en

Espaa

de relleno puede variar ligeramente.

Descripcin

Pgina

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

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

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Tipo Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
16

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A *

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

CO N T R O L 1

P os

4 2

4 3

4 4

4 5

4 6

4 7

4 8

4 9

T E X T (

5 0

5 1

5 2

5 3

5 4

5 5

5 6

5 7

5 8

5 9

6 0

6 1

' S U B A R C H I VO

6 2

6 3

D E

S F L C T L ( S U B A R C H I VO 1 )

S F L S I Z ( 1 7 )

6 4

6 5

6 6

6 7

6 8

6 9

7 0

7 1

CO N T R O L

7 2

'

7 3

7 4

7 5

7 6

7 7

7 8

7 9

8 0

S F L P AG ( 1 7 )

6 1

S F L CL R

6 2

S F L D S P

6 2

S F L D S PC T L

OV E R L A Y

L OC K

A *
A

H E L P ( 9 9

' T ECL A

CA 1 2 ( 9 8

' F I N

CA 1 1 ( 9 7

'

D E

D E

A Y UDA ' )

AC T U A L I Z AC I ON

I GNOR A R

P A GO ' )

E N T R AD A ' )

A *
A

9 9

S F L MSG (

' F 1 1 - I GNOR A R

F 1 2

L I Z AC I ON

D E

P A GO '

E N T R

F I N

D E

NO

VA L I DA +

AC T U A +

A *
A

6 5 ' F E CHA '

7 8 F E CHA

A
A

6 3

6 3

A
A

6 4

2 ' SOL I C I T UD

AC T U A L I Z

P A GO S

D E

CL I E N T E '

E D T CD E ( Y )

2 ' AC E P T A R '
2 ' P A GO '
1 4 ' CL I E N T E '

2 6 ' P A GO '

3 7 ' ME N S A J E

D E

E X C E P C I ON '

A *
A

M E S S AG E 1

T E X T (

' R EG I S T RO

OV E R L A Y

L OC K

D E

ME N S A J E '

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 ) '

D S P A T R ( R I )

A
A

Figura 73 (Parte 3 de 3). Ejemplo de una Especificacin de Descripcin de Datos para un Programa de Actualizacin de Pagos

230

COBOL/400 Gua del usuario

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. PAYUPDT.
3 3 ENVIRONMENT DIVISION.
4 4 CONFIGURATION SECTION.
5 5 SOURCE-COMPUTER. IBM-AS4.
6 6 OBJECT-COMPUTER. IBM-AS4.
7 7 INPUT-OUTPUT SECTION.
8 8 FILE-CONTROL.
9 9
SELECT CUSTOMER-INVOICE-FILE
1 1
ASSIGN TO DATABASE-ORDHDRL
11 11
ORGANIZATION IS INDEXED
12 12
ACCESS MODE IS SEQUENTIAL
13 13
RECORD KEY IS COMP-KEY
14 14
FILE STATUS IS STATUS-CODE-ONE.
15 15
SELECT CUSTOMER-MASTER-FILE
16 16
ASSIGN TO DATABASE-CUSMSTP
17 17
ORGANIZATION IS INDEXED
18 18
ACCESS IS RANDOM
19 19
RECORD KEY IS CUST OF CUSTOMER-MASTER-RECORD.
2 2
SELECT PAYMENT-UPDATE-DISPLAY-FILE
21 21
ASSIGN TO WORKSTATION-PAYUPDTD
22 22
ORGANIZATION IS TRANSACTION
23 23
ACCESS IS DYNAMIC
24 24
RELATIVE KEY IS REL-NUMBER
25 25
FILE STATUS IS STATUS-CODE-ONE
26 26
CONTROL-AREA IS WS-CONTROL.
27
27 28 DATA DIVISION.
28 29 FILE SECTION.
29 3 FD CUSTOMER-INVOICE-FILE
3 31
LABEL RECORDS ARE STANDARD.
31 32 1 CUSTOMER-INVOICE-RECORD.
32 33
COPY DDS-ORDHDR OF ORDHDRL.
+1\
FORMATO E-S:ORDHDR
DESDE ARCHIVO ORDHDRL
DE BIBLIOTECA XMPLIB
ORDHDR
+2\
ORDHDR
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO ORDHDR
ORDHDR
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
ORDHDR
+5\
1
CUST
ASCENDENTE
AN
NO
ORDHDR
+6\
2
INVNUM
ASCENDENTE
SIGNO
NO
ORDHDR
33 +7
5 ORDHDR.
ORDHDR
34 +8
6 CUST
PIC X(5).
ORDHDR
+9\
NMERO CLIENTE
ORDHDR
35 +1
6 INVNUM
PIC S9(5)
COMP-3.
ORDHDR
+11\
NMERO FACTURA
ORDHDR
36 +12
6 ORDERN
PIC S9(5)
COMP-3.
ORDHDR
+13\
NMERO PEDIDO
ORDHDR
37 +14
6 ORDDAT
PIC S9(6)
COMP-3.
ORDHDR
+15\
SE ENTR FECHA PEDIDO
ORDHDR
38 +16
6 CUSORD
PIC X(15).
ORDHDR
+17\
NMERO PEDIDO COMPRA CLIENTE
ORDHDR
39 +18
6 SHPVIA
PIC X(15).
ORDHDR
+19\
INSTRUCCIONES ENVO
ORDHDR
4 +2
6 ORDSTS
PIC S9(1)
COMP-3.
ORDHDR
+21\
ESTADO PEDIDO 1PEND 2CONT 3COM 4LIS 5IMP 6ENP
ORDHDR
41 +22
6 OPRNAM
PIC X(1).
ORDHDR
+23\
NOMBRE OPERADOR QUE ENTR EL PEDIDO
ORDHDR
42 +24
6 ORDAMT
PIC S9(6)V9(2)
COMP-3.
ORDHDR
+25\
TOTAL SUMA PESETAS DEL PEDIDO
ORDHDR
43 +26
6 CUSTYP
PIC S9(1)
COMP-3.
ORDHDR
+27\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
ORDHDR
44 +28
6 PRTDAT
PIC S9(6)
COMP-3.
ORDHDR
+29\
FECHA IMPRESIN PEDIDO
ORDHDR
45 +3
6 OPNSTS
PIC S9(1)
COMP-3.
ORDHDR
+31\
EST.PEDIDO ABIERTO 1=ABIERTO 2= CERRADO 3=CANCELAD.ORDHDR
46 +32
6 TOTLIN
PIC S9(3)
COMP-3.
ORDHDR
+33\
TOTAL LNEAS TEMS EN PEDIDO
ORDHDR
47 +34
6 ACTMTH
PIC S9(2)
COMP-3.
ORDHDR
+35\
MES CONTABLE DE VENTA
ORDHDR
48 +36
6 ACTYR
PIC S9(2)
COMP-3.
ORDHDR
+37\
AO CONTABLE DE VENTA
ORDHDR
49 +38
6 STATE
PIC X(2).
ORDHDR
+39\
PROVINCIA
ORDHDR
5 +4
6 AMPAID
PIC S9(6)V9(2)
COMP-3.
ORDHDR
+41\
TOTAL SUMA PESETAS PAGADAS
ORDHDR
51 34 66 COMP-KEY RENAMES CUST THRU INVNUM.
35

FECH/CAM
2/1/94
3/22/94
2/1/94
2/1/94
2/2/94
2/2/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
3/22/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
2/1/94
3/14/94

Figura 74 (Parte 1 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

Captulo 8. Archivos Transaccin

231

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S
52 36 FD CUSTOMER-MASTER-FILE
53 37
LABEL RECORDS ARE STANDARD.
54 38 1 CUSTOMER-MASTER-RECORD.
55 39
COPY DDS-CUSMST OF CUSMSTP.
+1\
FORMATO E-S:CUSMST
DESDE CUSMSTP DE BIBLIOTECA XMPLIB
+2\
REGISTRO MAESTRO CLIENTES
+3\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO CUSMST
+4\ NMERO
NOMBRE
RECUPERACIN TIPO
SECALT
+5\
1
CUST
ASCENDENTE
AN
NO
56 +6
5 CUSMST.
57 +7
6 CUST
PIC X(5).
+8\
NMERO CLIENTE
58 +9
6 NAME
PIC X(25).
+1\
NOMBRE CLIENTE
59 +11
6 ADDR
PIC X(2).
+12\
DIRECCIN CLIENTE
6 +13
6 CITY
PIC X(2).
+14\
CIUDAD CLIENTE
61 +15
6 STATE
PIC X(2).
+16\
PROVINCIA
62 +17
6 ZIP
PIC S9(5)
COMP-3.
+18\
CDIGO POSTAL
63 +19
6 SRHCOD
PIC X(6).
+2\
CDIGO BSQUEDA NMERO CLIENTE
64 +21
6 CUSTYP
PIC S9(1)
COMP-3.
+22\
TIPO CLIENTE 1=GOB 2=PLA 3=NEG 4=FAB 5=OTR
65 +23
6 ARBAL
PIC S9(6)V9(2)
COMP-3.
+24\
SALDO CUENTAS PEND.
66 +25
6 ORDBAL
PIC S9(6)V9(2)
COMP-3.
+26\
CANTIDAD C/C EN ARCH. PEDIDOS
67 +27
6 LSTAMT
PIC S9(6)V9(2)
COMP-3.
+28\
ULTIMA CANTIDAD PAGADA EN C/C
68 +29
6 LSTDAT
PIC S9(6)
COMP-3.
+3\
ULTIMA FECHA PAGADA EN C/C
69 +31
6 CRDLMT
PIC S9(6)V9(2)
COMP-3.
+32\
LMITE CRDITO CLIENTE
7 +33
6 SLSYR
PIC S9(8)V9(2)
COMP-3.
+34\
VENTAS CLIENTE ESTE AO
71 +35
6 SLSLYR
PIC S9(8)V9(2)
COMP-3.
+36\
VENTAS CLIENTE AO PASADO
4
72 41 FD PAYMENT-UPDATE-DISPLAY-FILE
73 42
LABEL RECORDS ARE OMITTED.
74 43 1 PAYMENT-UPDATE-DISPLAY-RECORD.
75 44
COPY DDS-ALL-FORMATS OF PAYUPDTD.
76 +1
5 PAYUPDTD-RECORD PIC X(59).
+2\ FORMATO ENTRADA:SUBFILE1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+3\
SUBARCHIVO PARA PAGOS CLIENTE
77 +4
5 SUBFILE1-I
REDEFINES PAYUPDTD-RECORD.
78 +5
6 ACPPMT
PIC X(4).
+6\
ACEPTAR PAGO
79 +7
6 CUST
PIC X(5).
+8\
CUSTOMER NUMBER
8 +9
6 AMPAID
PIC S9(6)V9(2).
+1\
CANTIDAD PAGADA
81 +11
6 ECPMSG
PIC X(31).
+12\
MENSAJE DE EXCEPCIN
82 +13
6 OVRPMT
PIC S9(6)V9(2).
+14\
PAGO EXCESIVO
83 +15
6 STSCDE
PIC X(1).
+16\
CDIGO DE ESTADO
+17\FORMATO SALIDA:SUBFILE1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+18\
SUBARCHIVO PARA PAGOS CLIENTE
84 +19
5 SUBFILE1-O
REDEFINES PAYUPDTD-RECORD.
85 +2
6 SUBFILE1-O-INDIC.
86 +21
7 IN51
PIC 1 INDIC 51.
87 +22
7 IN52
PIC 1 INDIC 52.
88 +23
7 IN53
PIC 1 INDIC 53.
89 +24
7 IN54
PIC 1 INDIC 54.
9 +25
7 IN55
PIC 1 INDIC 55.
91 +26
7 IN56
PIC 1 INDIC 56.
92 +27
6 CUST
PIC X(5).
+28\
NMERO CLIENTE
93 +29
6 AMPAID
PIC S9(6)V9(2).
+3\
CANTIDAD PAGADA
94 +31
6 ECPMSG
PIC X(31).
+32\
MENSAJE DE EXCEPCIN

NOMCOPIA

FECH/CAM

CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST
CUSMST

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 74 (Parte 2 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

232

COBOL/400 Gua del usuario

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S
95 +33
6 OVRPMT
PIC S9(6)V9(2).
+34\
PAGO EXCESIVO
96 +35
6 STSCDE
PIC X(1).
+36\
CDIGO DE ESTADO
+37\ FORMATO ENTRADA:CONTROL1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+38\
CONTROL SUBARCHIVO
97 +39
5 CONTROL1-I
REDEFINES PAYUPDTD-RECORD.
98 +4
6 CONTROL1-I-INDIC.
99 +41
7 IN99
PIC 1 INDIC 99.
+42\
TECLA AYUDA
1 +43
7 IN98
PIC 1 INDIC 98.
+44\
FIN ACTUALIZACIN PAGOS
11 +45
7 IN97
PIC 1 INDIC 97.
+46\
IGNORAR ENTRADA
+47\FORMATO SALIDA:CONTROL1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+48\
CONTROL SUBARCHIVO
12 +49
5 CONTROL1-O
REDEFINES PAYUPDTD-RECORD.
13 +5
6 CONTROL1-O-INDIC.
14 +51
7 IN61
PIC 1 INDIC 61.
15 +52
7 IN62
PIC 1 INDIC 62.
16 +53
7 IN99
PIC 1 INDIC 99.
+54\
TECLA AYUDA
17 +55
7 IN63
PIC 1 INDIC 63.
18 +56
7 IN64
PIC 1 INDIC 64.
+57\ FORMATO ENTRADA:MESSAGE1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+58\
REGISTRO MENSAJES
+59\
5 MESSAGE1-I
REDEFINES PAYUPDTD-RECORD.
+6\FORMATO SALIDA:MESSAGE1
DESDE ARCHIVO PAYUPDTD
DE BIBLIOTECA XMPLIB
+61\
REGISTRO MENSAJES
19 +62
5 MESSAGE1-O
REDEFINES PAYUPDTD-RECORD.
11 +63
6 MESSAGE1-O-INDIC.
111 +64
7 IN71
PIC 1 INDIC 71.
45
112 46 WORKING-STORAGE SECTION.
47
113 48 1 REL-NUMBER
PIC 9(5)
114 49
VALUE ZEROS.
5
115 51 1 WS-CONTROL.
116 52
5 WS-IND
PIC X(2).
117 53
5 WS-FORMAT
PIC X(1).
118 54 1 SYSTEM-DATE.
119 55
5 SYSTEM-YEAR
PIC 99.
12 56
5 SYSTEM-MONTH
PIC 99.
121 57
5 SYSTEM-DAY
PIC 99.
122 58 1 PROGRAM-DATE.
123 59
5 PROGRAM-MONTH
PIC 99.
124 6
5 PROGRAM-DAY
PIC 99.
125 61
5 PROGRAM-YEAR
PIC 99.
126 62 1 FILE-DATE REDEFINES PROGRAM-DATE
127 63
PIC S9(6).
128 64 1 EXCEPTION-STATUS.
129 65
5 STATUS-CODE-ONE
PIC XX.
13 66
88 SUBFILE-IS-FULL
VALUE '9M'.
131 67 1 EXCEPTION-MESSAGES.
132 68
5 MESSAGE-ONE
PIC X(31)
133 69
VALUE 'CUSTOMER DOES NOT EXIST
'.
134 7
5 MESSAGE-TWO
PIC X(31)
135 71
VALUE 'NO INVOICES EXIST FOR CUSTOMER '.
136 72
5 MESSAGE-THREE
PIC X(31)
137 73
VALUE 'CUSTOMER HAS AN OVER PAYMENT OF'.
138 74 1 PROGRAM-VARIABLES.
139 75
5 AMOUNT-OWED
PIC S9(6)V99.
14 76
5 AMOUNT-PAID
PIC S9(6)V99.
141 77
5 INVOICE-BALANCE
PIC S9(6)V99.
142 78 1 ERRPGM-PARAMETERS.
143 79
5 DISPLAY-PARAMETER
PIC X(8)
144 8
VALUE 'PAYUPDTD'.
145 81
5 DUMMY-ONE
PIC X(6)
146 82
VALUE SPACES.
147 83
5 DUMMY-TWO
PIC X(6)
148 84
VALUE SPACES.
149 85
5 STATUS-CODE-TWO.
15 86
1 PRIMARY
PIC X(1).
151 87
1 SECONDARY
PIC X(1).

NOMCOPIA
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

FECH/CAM

Figura 74 (Parte 3 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

Captulo 8. Archivos Transaccin

233

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
152 88
1 FILLER
PIC X(5)
153 89
VALUE SPACES.
154 9
5 DUMMY-THREE
PIC X(1)
155 91
VALUE SPACES.
92
156 93 1 SWITCH-AREA.
157 94
5 SW1
PIC 1.
158 95
88 WRITE-DISPLAY
VALUE B'1'.
159 96
88 READ-DISPLAY
VALUE B''.
16 97
5 SW2
PIC 1.
161 98
88 SUBFILE1-FORMAT
VALUE B'1'.
162 99
88 NOT-SUBFILE1-FORMAT
VALUE B''.
163 1
5 SW3
PIC 1.
164 11
88 CONTROL1-FORMAT
VALUE B'1'.
165 12
88 NOT-CONTROL1-FORMAT
VALUE B'1'.
166 13
5 SW4
PIC 1.
167 14
88 NO-MORE-TRANSACTIONS-EXIST
VALUE B'1'.
168 15
88 TRANSACTIONS-EXIST
VALUE B''.
169 16
5 SW5
PIC 1.
17 17
88 CUSTOMER-NOT-FOUND
VALUE B'1'.
171 18
88 CUSTOMER-EXIST
VALUE B''.
172 19
5 SW6
PIC 1.
173 11
88 NO-MORE-INVOICES-EXIST
VALUE B'1'.
174 111
88 CUSTOMER-INVOICE-EXIST
VALUE B''.
175 112
5 SW7
PIC 1.
176 113
88 NO-MORE-PAYMENT-EXIST
VALUE B''.
177 114
88 PAYMENT-EXIST
VALUE B''.
178 115
5 SW8
PIC 1.
179 116
88 INPUT-ERRORS-EXIST
VALUE B'1'.
18 117
88 NO-INPUT-ERRORS-EXIST
VALUE B''.
181 118
5 SW9
PIC 1.
182 119
88 OVER-PAYMENT-DISPLAYED-ONCE
VALUE B'1'.
183 12
88 OVER-PAYMENT-NOT-DISPLAYED
VALUE B''.
121
184 122 1 INDICATOR-AREA.
185 123
5 IN99
PIC 1 INDIC 99.
186 124
88 HELP-IS-NEEDED
VALUE B'1'.
187 125
88 HELP-IS-NOT-NEEDED
VALUE B''.
188 126
5 IN98
PIC 1 INDIC 98.
189 127
88 END-OF-PAYMENT-UPDATE
VALUE B'1'.
19 128
5 IN97
PIC 1 INDIC 97.
191 129
88 IGNORE-INPUT
VALUE B'1'.
192 13
5 IN51
PIC 1 INDIC 51.
193 131
88 DISPLAY-ACCEPT-PAYMENT
VALUE B'1'.
194 132
88 DO-NOT-DISPLAY-ACCEPT-PAYMENT VALUE B''.
195 133
5 IN52
PIC 1 INDIC 52.
196 134
88 REVERSE-FIELD-IMAGE
VALUE B'1'.
197 135
88 DO-NOT-REVERSE-FIELD-IMAGE
VALUE B''.
198 136
5 IN53
PIC 1 INDIC 53.
199 137
88 DO-NOT-DISPLAY-FIELD
VALUE B'1'.
2 138
88 DISPLAY-FIELD
VALUE B''.
21 139
5 IN54
PIC 1 INDIC 54.
22 14
88 PROTECT-INPUT-FIELD
VALUE B'1'.
23 141
88 DO-NOT-PROTECT-INPUT-FIELD
VALUE B''.
24 142
5 IN55
PIC 1 INDIC 55.
25 143
88 MAKE-FIELD-BLINK
VALUE B'1'.
26 144
88 DO-NOT-MAKE-FIELD-BLINK
VALUE B''.
27 145
5 IN56
PIC 1 INDIC 56.
28 146
88 DISPLAY-OVER-PAYMENT
VALUE B'1'.
29 147
88 DO-NOT-DISPLAY-OVER-PAYMENT
VALUE B''.
21 148
5 IN61
PIC 1 INDIC 61.
211 149
88 CLEAR-SUBFILE
VALUE B'1'.
212 15
88 DO-NOT-CLEAR-SUBFILE
VALUE B''.
213 151
5 IN62
PIC 1 INDIC 62.
214 152
88 DISPLAY-SCREEN
VALUE B'1'.
215 153
88 DO-NOT-DISPLAY-SCREEN
VALUE B''.
216 154
5 IN63
PIC 1 INDIC 63.
217 155
88 DISPLAY-ACCEPT-HEADING
VALUE B'1'.
218 156
88 DO-NOT-DISPLAY-ACCEPT-HEADING VALUE B''.
219 157
5 IN64
PIC 1 INDIC 64.
22 158
88 DISPLAY-EXCEPTION
VALUE B'1'.
221 159
88 DO-NOT-DISPLAY-EXCEPTION
VALUE B''.
222 16
5 IN71
PIC 1 INDIC 71.
223 161
88 DISPLAY-ACCEPT-MESSAGE
VALUE B'1'.
224 162
88 DO-NOT-DISPLAY-ACCEPT-MESSAGE VALUE B''.
163

NOMCOPIA

FECH/CAM

Figura 74 (Parte 4 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

234

COBOL/400 Gua del usuario

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
225 164 PROCEDURE DIVISION.
165
166 DECLARATIVES.
167
168 TRANSACTION-ERROR SECTION.
169
USE AFTER STANDARD ERROR PROCEDURE
17
PAYMENT-UPDATE-DISPLAY-FILE.
171 WORK-STATION-ERROR-HANDLER.
226 172
IF SUBFILE-IS-FULL THEN
173
NEXT SENTENCE
174
ELSE
227 175
DISPLAY 'ERROR IN PAYMENT-UPDATE' STATUS-CODE-ONE.
176 END DECLARATIVES.
177
178 CUSTOMER-PAYMENT-UPDATE SECTION.
179 MAINLINE-ROUTINE.
228 18
PERFORM SET-UP-ROUTINE.
229 181
PERFORM PROCESS-TRANSACTION-FILE
182
UNTIL END-OF-PAYMENT-UPDATE.
23 183
PERFORM CLEAN-UP-ROUTINE.
184
185 SET-UP-ROUTINE.
231 186
OPEN I-O
CUSTOMER-INVOICE-FILE
187
CUSTOMER-MASTER-FILE
188
PAYMENT-UPDATE-DISPLAY-FILE.
232 189
MOVE ALL B'' TO INDICATOR-AREA
19
SWITCH-AREA.
233 191
ACCEPT SYSTEM-DATE FROM DATE.
234 192
MOVE SYSTEM-YEAR TO PROGRAM-YEAR.
235 193
MOVE SYSTEM-MONTH TO PROGRAM-MONTH.
236 194
MOVE SYSTEM-DATE TO PROGRAM-DAY.
237 195
SET WRITE-DISPLAY
196
CONTROL1-FORMAT
197
DO-NOT-DISPLAY-OVER-PAYMENT
198
DO-NOT-PROTECT-INPUT-FIELD
199
DO-NOT-REVERSE-FIELD-IMAGE
2
DO-NOT-MAKE-FIELD-BLINK
21
CLEAR-SUBFILE TO TRUE.
238 22
MOVE CORR INDICATOR-AREA TO CONTROL1-O-INDIC.
239 23
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
24
FORMAT IS 'CONTROL1'.
24 25
SET DO-NOT-CLEAR-SUBFILE TO TRUE.
241 26
PERFORM INITIALIZE-SUBFILE-RECORD 17 TIMES.
242 27
SET DISPLAY-SCREEN TO TRUE.
243 28
MOVE CORR INDICATOR-AREA TO CONTROL1-O-INDIC.
244 29
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
21
FORMAT IS 'CONTROL1'.
245 211
READ PAYMENT-UPDATE-DISPLAY-FILE RECORD
212
FORMAT IS 'CONTROL1'.
246 213
MOVE CORR CONTROL1-I-INDIC TO INDICATOR-AREA.
214 PROCESS-TRANSACTION-FILE.
247 215
IF HELP-IS-NOT-NEEDED THEN
248 216
IF IGNORE-INPUT THEN
249 217
SET WRITE-DISPLAY
218
CONTROL1-FORMAT
219
CLEAR-SUBFILE
22
DISPLAY-FIELD
221
DO-NOT-DISPLAY-OVER-PAYMENT
222
DO-NOT-PROTECT-INPUT-FIELD
223
DO-NOT-REVERSE-FIELD-IMAGE
224
DO-NOT-DISPLAY-ACCEPT-PAYMENT
225
DO-NOT-DISPLAY-ACCEPT-HEADING
226
DO-NOT-DISPLAY-ACCEPT-MESSAGE
227
DO-NOT-MAKE-FIELD-BLINK TO TRUE
25 228
MOVE CORR INDICATOR-AREA TO CONTROL1-O-INDIC
251 229
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
23
FORMAT IS 'CONTROL1'
252 231
SET DO-NOT-CLEAR-SUBFILE TO TRUE
253 232
MOVE TO REL-NUMBER
254 233
PERFORM INITIALIZE-SUBFILE-RECORD 17 TIMES
234
ELSE
255 235
SET TRANSACTIONS-EXIST
236
DO-NOT-DISPLAY-ACCEPT-HEADING
237
DO-NOT-DISPLAY-ACCEPT-MESSAGE
238
DO-NOT-DISPLAY-EXCEPTION TO TRUE
256 239
PERFORM READ-MODIFIED-SUBFILE-RECORD

NOMCOPIA

FECH/CAM

Figura 74 (Parte 5 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

Captulo 8. Archivos Transaccin

235

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
257 24
PERFORM TRANSACTION-VALIDATION
241
UNTIL NO-MORE-TRANSACTIONS-EXIST
258 242
SET NO-INPUT-ERRORS-EXIST TO TRUE
259 243
PERFORM TEST-FOR-RECORD-INPUT-ERRORS
244
VARYING REL-NUMBER
245
FROM
1
246
BY
1
247
UNTIL
REL-NUMBER IS GREATER THAN 17
248
OR
INPUT-ERRORS-EXIST
26 249
IF NO-INPUT-ERRORS-EXIST THEN
261 25
IF OVER-PAYMENT-DISPLAYED-ONCE THEN
262 251
SET WRITE-DISPLAY
252
CONTROL1-FORMAT
253
DO-NOT-DISPLAY-OVER-PAYMENT
254
DO-NOT-PROTECT-INPUT-FIELD
255
DO-NOT-REVERSE-FIELD-IMAGE
256
DO-NOT-MAKE-FIELD-BLINK
257
DO-NOT-DISPLAY-ACCEPT-PAYMENT
258
DO-NOT-DISPLAY-ACCEPT-HEADING
259
DO-NOT-DISPLAY-ACCEPT-MESSAGE
26
DO-NOT-DISPLAY-EXCEPTION
261
CLEAR-SUBFILE
262
DISPLAY-FIELD
263
TO TRUE
263 264
MOVE CORR INDICATOR-AREA TO CONTROL1-O-INDIC
264 265
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
266
FORMAT IS 'CONTROL1'
265 267
SET DO-NOT-CLEAR-SUBFILE TO TRUE
266 268
MOVE TO REL-NUMBER
267 269
PERFORM INITIALIZE-SUBFILE-RECORD 17 TIMES
27
ELSE
268 271
SET OVER-PAYMENT-DISPLAYED-ONCE TO TRUE
272
ELSE
273
NEXT SENTENCE
274
ELSE
275
NEXT SENTENCE.
269 276
SET WRITE-DISPLAY, DISPLAY-SCREEN TO TRUE.
27 277
MOVE CORR INDICATOR-AREA TO MESSAGE1-O-INDIC.
271 278
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
279
FORMAT IS 'MESSAGE1'.
272 28
SET WRITE-DISPLAY, CONTROL1-FORMAT TO TRUE.
273 281
MOVE CORR INDICATOR-AREA TO CONTROL1-O-INDIC.
274 282
WRITE PAYMENT-UPDATE-DISPLAY-RECORD
283
FORMAT IS 'CONTROL1'.
275 284
READ PAYMENT-UPDATE-DISPLAY-FILE RECORD
285
FORMAT IS 'CONTROL1'.
276 286
MOVE CORR CONTROL1-I-INDIC TO INDICATOR-AREA.
287 READ-MODIFIED-SUBFILE-RECORD.
277 288
READ SUBFILE PAYMENT-UPDATE-DISPLAY-FILE
289
NEXT MODIFIED RECORD FORMAT IS 'SUBFILE1'
278 29
AT END SET NO-MORE-TRANSACTIONS-EXIST TO TRUE.
291 TEST-FOR-RECORD-INPUT-ERRORS.
279 292
READ SUBFILE PAYMENT-UPDATE-DISPLAY-FILE RECORD
293
FORMAT IS 'SUBFILE1'.
28 294
IF STSCDE OF SUBFILE1-I IS EQUAL TO '1' THEN
281 295
SET INPUT-ERRORS-EXIST TO TRUE
296
ELSE
297
NEXT SENTENCE.
298 TRANSACTION-VALIDATION.
282 299
MOVE CUST OF SUBFILE1-I OF PAYMENT-UPDATE-DISPLAY-RECORD
3
TO CUST OF CUSTOMER-MASTER-RECORD.
283 31
SET CUSTOMER-EXIST TO TRUE.
284 32
READ CUSTOMER-MASTER-FILE
285 33
INVALID KEY SET CUSTOMER-NOT-FOUND TO TRUE.
286 34
IF CUSTOMER-EXIST THEN
287 35
MOVE CUST OF CUSMST TO CUST OF ORDHDR
288 36
MOVE ZEROES TO INVNUM
289 37
SET CUSTOMER-INVOICE-EXIST TO TRUE
29 38
PERFORM START-ON-CUSTOMER-INVOICE-FILE
291 39
IF CUSTOMER-INVOICE-EXIST THEN
292 31
PERFORM READ-CUSTOMER-INVOICE-RECORD
293 311
IF CUSTOMER-INVOICE-EXIST THEN
294 312
PERFORM CUSTOMER-MASTER-FILE-UPDATE
295 313
MOVE AMPAID OF SUBFILE1-I TO AMOUNT-PAID
296 314
SET PAYMENT-EXIST TO TRUE

NOMCOPIA

FECH/CAM

Figura 74 (Parte 6 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

236

COBOL/400 Gua del usuario

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
297 315
PERFORM PAYMENT-UPDATE
316
UNTIL NO-MORE-INVOICES-EXIST
317
OR NO-MORE-PAYMENT-EXIST
298 318
IF ARBAL OF CUSTOMER-MASTER-RECORD IS NEGATIVE
299 319
SET MAKE-FIELD-BLINK
32
DISPLAY-FIELD
321
DO-NOT-REVERSE-FIELD-IMAGE
322
OVER-PAYMENT-NOT-DISPLAYED
323
DISPLAY-OVER-PAYMENT
324
DISPLAY-EXCEPTION
325
DO-NOT-DISPLAY-ACCEPT-PAYMENT
326
PROTECT-INPUT-FIELD TO TRUE
3 327
MOVE ARBAL TO OVRPMT OF SUBFILE1-O
31 328
MOVE MESSAGE-THREE TO ECPMSG OF SUBFILE1-O
32 329
MOVE '' TO STSCDE OF SUBFILE1-O
33 33
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD
331
ELSE
34 332
SET DO-NOT-DISPLAY-FIELD
333
DO-NOT-DISPLAY-OVER-PAYMENT
334
DO-NOT-REVERSE-FIELD-IMAGE
335
DO-NOT-MAKE-FIELD-BLINK
336
DO-NOT-DISPLAY-ACCEPT-PAYMENT
337
PROTECT-INPUT-FIELD TO TRUE
35 338
MOVE SPACES TO ECPMSG OF SUBFILE1-O
36 339
MOVE ZEROES TO OVRPMT OF SUBFILE1-O
37 34
MOVE '' TO STSCDE OF SUBFILE1-O
38 341
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD
342
ELSE
39 343
PERFORM NO-CUSTOMER-INVOICE-ROUTINE
344
ELSE
31 345
PERFORM NO-CUSTOMER-INVOICE-ROUTINE
346
ELSE
311 347
SET REVERSE-FIELD-IMAGE
348
DO-NOT-PROTECT-INPUT-FIELD
349
DISPLAY-FIELD
35
DO-NOT-DISPLAY-OVER-PAYMENT
351
DO-NOT-MAKE-FIELD-BLINK
352
DISPLAY-EXCEPTION
353
DO-NOT-DISPLAY-ACCEPT-PAYMENT
354
DO-NOT-PROTECT-INPUT-FIELD TO TRUE
312 355
MOVE ZEROES TO OVRPMT OF SUBFILE1-O
313 356
MOVE MESSAGE-ONE TO ECPMSG OF SUBFILE1-O
314 357
MOVE '1' TO STSCDE OF SUBFILE1-O
315 358
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD.
316 359
PERFORM READ-MODIFIED-SUBFILE-RECORD.
36 START-ON-CUSTOMER-INVOICE-FILE.
317 361
START CUSTOMER-INVOICE-FILE
362
KEY IS GREATER THAN COMP-KEY
318 363
INVALID KEY SET NO-MORE-INVOICES-EXIST TO TRUE.
364 READ-CUSTOMER-INVOICE-RECORD.
319 365
READ CUSTOMER-INVOICE-FILE NEXT RECORD
32 366
AT END SET NO-MORE-INVOICES-EXIST TO TRUE.
321 367
IF CUST OF CUSTOMER-MASTER-RECORD
368
IS NOT EQUAL TO CUST OF CUSTOMER-INVOICE-RECORD THEN
322 369
SET NO-MORE-INVOICES-EXIST TO TRUE
37
ELSE
371
NEXT SENTENCE.
372 CUSTOMER-MASTER-FILE-UPDATE.
323 373
MOVE FILE-DATE TO LSTDAT OF CUSTOMER-MASTER-RECORD.
324 374
MOVE AMPAID OF SUBFILE1-I
375
TO LSTAMT OF CUSTOMER-MASTER-RECORD.
325 376
SUBTRACT AMPAID OF SUBFILE1-I
377
FROM ARBAL OF CUSTOMER-MASTER-RECORD.
326 378
REWRITE CUSTOMER-MASTER-RECORD.
379 REWRITE-DISPLAY-SUBFILE-RECORD.
327 38
MOVE AMPAID OF SUBFILE1-I TO AMPAID OF SUBFILE1-O.
328 381
MOVE CUST OF SUBFILE1-I TO CUST OF SUBFILE1-O.
329 382
SET WRITE-DISPLAY TO TRUE.
33 383
SET SUBFILE1-FORMAT TO TRUE.
331 384
MOVE CORR INDICATOR-AREA TO SUBFILE1-O-INDIC.
332 385
REWRITE SUBFILE PAYMENT-UPDATE-DISPLAY-RECORD
386
FORMAT IS 'SUBFILE1'.
387 NO-CUSTOMER-INVOICE-ROUTINE.
333 388
IF STSCDE OF SUBFILE1-I IS EQUAL TO '1' THEN
334 389
IF ACPPMT OF SUBFILE1-I IS EQUAL TO '\NO' THEN
335 39
SET DO-NOT-DISPLAY-FIELD

NOMCOPIA

FECH/CAM

Figura 74 (Parte 7 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

Captulo 8. Archivos Transaccin

237

5763CB1 V3RM5
Listado Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
391
DO-NOT-DISPLAY-OVER-PAYMENT
392
DO-NOT-REVERSE-FIELD-IMAGE
393
DO-NOT-MAKE-FIELD-BLINK
394
DO-NOT-DISPLAY-ACCEPT-PAYMENT
395
PROTECT-INPUT-FIELD
396
TO TRUE
336 397
MOVE SPACES TO ECPMSG OF SUBFILE1-O
337 398
MOVE ZEROES TO OVRPMT OF SUBFILE1-O
338 399
MOVE '' TO STSCDE OF SUBFILE1-O
339 4
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD
41
ELSE
34 42
PERFORM CUSTOMER-MASTER-FILE-UPDATE
341 43
SET MAKE-FIELD-BLINK
44
DISPLAY-FIELD
45
DO-NOT-REVERSE-FIELD-IMAGE
46
OVER-PAYMENT-NOT-DISPLAYED
47
DISPLAY-OVER-PAYMENT
48
DISPLAY-EXCEPTION
49
DO-NOT-DISPLAY-ACCEPT-PAYMENT
41
PROTECT-INPUT-FIELD
411
TO TRUE
342 412
MOVE ARBAL TO OVRPMT OF SUBFILE1-O
343 413
MOVE MESSAGE-THREE TO ECPMSG OF SUBFILE1-O
344 414
MOVE '' TO STSCDE OF SUBFILE1-O
345 415
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD
416
ELSE
346 417
SET REVERSE-FIELD-IMAGE
418
DISPLAY-FIELD
419
DO-NOT-PROTECT-INPUT-FIELD
42
DO-NOT-DISPLAY-OVER-PAYMENT
421
DISPLAY-EXCEPTION
422
DISPLAY-ACCEPT-PAYMENT
423
DISPLAY-ACCEPT-HEADING
424
DISPLAY-ACCEPT-MESSAGE
425
DO-NOT-MAKE-FIELD-BLINK
426
TO TRUE
347 427
MOVE ZEROS TO OVRPMT OF SUBFILE1-O
348 428
MOVE MESSAGE-TWO TO ECPMSG OF SUBFILE1-O
349 429
MOVE '1' TO STSCDE OF SUBFILE1-O
35 43
PERFORM REWRITE-DISPLAY-SUBFILE-RECORD.
431 PAYMENT-UPDATE.
351 432
SUBTRACT AMPAID OF CUSTOMER-INVOICE-RECORD
433
FROM ORDAMT OF CUSTOMER-INVOICE-RECORD
434
GIVING AMOUNT-OWED.
352 435
SUBTRACT AMOUNT-PAID
436
FROM AMOUNT-OWED
437
GIVING INVOICE-BALANCE.
353 438
IF INVOICE-BALANCE IS LESS THAN .1 THEN
354 439
MOVE 2 TO OPNSTS OF CUSTOMER-INVOICE-RECORD
355 44
MOVE ORDAMT OF CUSTOMER-INVOICE-RECORD
441
TO AMPAID OF CUSTOMER-INVOICE-RECORD
356 442
SUBTRACT AMOUNT-OWED
443
FROM AMOUNT-PAID
444
ELSE
357 445
ADD AMOUNT-PAID TO AMPAID OF CUSTOMER-INVOICE-RECORD
358 446
SET NO-MORE-PAYMENT-EXIST TO TRUE.
359 447
REWRITE CUSTOMER-INVOICE-RECORD.
36 448
IF NO-MORE-PAYMENT-EXIST THEN
449
NEXT SENTENCE
45
ELSE
361 451
PERFORM READ-CUSTOMER-INVOICE-RECORD.
452 INITIALIZE-SUBFILE-RECORD.
362 453
MOVE SPACES TO CUST OF SUBFILE1-O.
363 454
MOVE SPACES TO ECPMSG OF SUBFILE1-O.
364 455
MOVE '' TO STSCDE OF SUBFILE1-O.
365 456
MOVE ZEROS TO AMPAID OF SUBFILE1-O.
366 457
MOVE ZEROS TO OVRPMT OF SUBFILE1-O.
367 458
ADD 1 TO REL-NUMBER.
368 459
MOVE CORR INDICATOR-AREA TO SUBFILE1-O-INDIC.
369 46
WRITE SUBFILE PAYMENT-UPDATE-DISPLAY-RECORD
461
FORMAT IS 'SUBFILE1'.
462 CLEAN-UP-ROUTINE.
37 463
CLOSE CUSTOMER-INVOICE-FILE
464
CUSTOMER-MASTER-FILE
465
PAYMENT-UPDATE-DISPLAY-FILE.
371 466
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E \ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 74 (Parte 8 de 8). Listado Fuente de un Ejemplo de Programa de Actualizacin de Pagos

Esta es la pantalla incial que se graba en la estacin de trabajo para solicitar al


usuario la entrada del nmero de cliente y pago:

238

COBOL/400 Gua del usuario

Solicitud de Actualizacin Pagos de Cliente


Cliente

Pago

______
______
______
______
______
______
______
______
______
______

__________
__________
__________
__________
__________
__________
__________
__________
__________
__________

______
______
______
______
______

__________
__________
__________
__________
__________

Fecha

5/24/94

El usuario entra los nmeros de cliente y pagos:

Solicitud de Actualizacin Pagos de Cliente

Cliente

Pago

345
45
36
125
22799
419
11
495
133
569

2
3
25
2
45
75
5
25
35
4

Fecha

5/24/94

Los pagos excesivos o que tengan nmeros incorrectos de cliente se dejan en la


pantalla y se aaden mensajes adecuados:

Captulo 8. Archivos Transaccin

239

Solicitud de Actualizacin Pagos de Cliente


Aceptar
Pago

Cliente

Pago

Fecha

5/24/94

Mensaje de Excepcin

_____

45

NO EXISTEN FACTURAS PARA CLIENTES

_____

125

NO EXISTEN FACTURAS PARA CLIENTES

_____

419
11

75
5

NO EXISTEN FACTURAS PARA CLIENTES


CLIENTE NO EXISTE

_____

133

35

NO EXISTEN FACTURAS PARA CLIENTES

Aceptar valores de pago: (\NO \YES)

Indique qu pagos hay que aceptar:

Solicitud de Actualizacin Pagos de Cliente


Pago

Fecha

Aceptar
Pago

Cliente

\NO

45

NO EXISTEN FACTURAS PARA CLIENTES

\YES

125

NO EXISTEN FACTURAS PARA CLIENTES

\NO

419
11

75
5

NO EXISTEN FACTURAS PARA CLIENTES


CLIENTE NO EXISTE

\NO

133

35

NO EXISTEN FACTURAS PARA CLIENTES

5/24/94

Mensaje de Excepcin

Aceptar valores de pago: (\NO \YES)

Se procesan los pagos aceptados y se visualiza la informacin de pagos excesivos:

240

COBOL/400 Gua del usuario

Solicitud de Actualizacin Pagos de Cliente


Aceptar
Pago

Cliente

Pago

125

11

Fecha

5/24/94

Mensaje de Excepcin
CLIENTE TIENE PAGO EXCESIVO DE

58.5

CLIENTE NO EXISTE

Fin de Ampliacin de IBM

Captulo 8. Archivos Transaccin

241

242

COBOL/400 Gua del usuario

Captulo 9. Archivos de Impresora


En este captulo se describe cmo COBOL/400 interacta con los distintos tipos de
archivos de impresora.
Es posible obtener salida impresa de un programa COBOL emitiendo instrucciones
WRITE a uno o ms archivos de impresora. Cada archivo de impresora debe
tener un nombre nico y debe estar asignado a un dispositivo PRINTER o
FORMATFILE en la clusula ASSIGN de esa entrada FILE-CONTROL del archivo.
Debe utilizarse un dispositivo PRINTER (impresora) para los archivos descritos por
programa, y debe utilizarse un dispositivo FORMATFILE para archivos de impresora descritos externamente. El mandato Crear Archivo de Impresin (CRTPRTF)
puede utilizarse para crear un archivo de impresora (consulte el manual CL
Reference para obtener ms informacin sobre el mandato CRTPRTF) o un
archivo de dispositivo de impresora suministrado por IBM, como por ejemplo
QPRINT.
Las operaciones de archivo vlidas para un archivo de impresora son WRITE,
OPEN y CLOSE. Para obtener una descripcin completa de estas operaciones,
consulte el manual COBOL/400 Reference.
Consulte la publicacin DDS Reference para obtener ms informacin sobre DDS
para archivos de impresora descritos externamente. Para obtener ms informacin
acerca de los archivos FORMATFILE, consulte el apartado Archivos
FORMATFILE en la pgina 244.

Prrafo SPECIAL-NAMES y Frase ADVANCING


Cuando se especifica el nombre mnemotcnico asociado con el nombre de funcin
CSP en la frase ADVANCING de una instruccin WRITE para un archivo de impresora, se obtiene el mismo resultado que si se especifica ADVANCING 0 LINES.
Cuando se especifica el nombre mnemotcnico asociado con el nombre de funcin
C01 en la frase ADVANCING de una instruccin WRITE para un archivo de impresora, se obtiene el mismo resultado que si se especifica ADVANCING PAGE.
La frase ADVANCING no puede especificarse en instrucciones WRITE para
archivos asignados a FORMATFILE.

Clusula LINAGE
Cuando se especifica la clusula LINAGE para un archivo asignado a PRINTER,
todos los controles de espaciado y paginacin se manejan internamente por el
cdigo generado por el compilador.
La colocacin del papel slo se realiza cuando se ejecuta la primera instruccin
WRITE. El papel de la impresora se coloca en una nueva pgina fsica y
LINAGE-COUNTER se establece en 1. Cuando se comparte el archivo de impresora y otros programas poseen registros escritos en el archivo, la instruccin
COBOL WRITE an se considera la primera instruccin WRITE. El compilador
COBOL/400 maneja la colocacin del papel aunque no sea la primera instruccin
WRITE para ese archivo.

Copyright IBM Corp. 1994

243

Todo el espaciado y la paginacin de las instrucciones WRITE se controla internamente. El tamao fsico de la pgina se ignora cuando la posicin del papel no
se define correctamente para el compilador COBOL/400. Para un archivo con una
clusula LINAGE y que est asignado a PRINTER, la paginacin incluye el espaciado hasta el final de la pgina lgica (cuerpo de la pgina) y en el espaciado
hasta los mrgenes inferiores y superiores.
La utilizacin de la clusula LINAGE degrada el rendimiento. La clusula LINAGE
slo debe utilizarse cuando sea necesaria. Si la paginacin fsica es aceptable, no
se necesita la clusula LINAGE.
La clasula LINAGE no debe utilizarse para los archivos asignados a
FORMATFILE.

Archivos FORMATFILE
Los archivos de impresora descritos externamente deben asignarse a un dispositivo de FORMATFILE. El trmino FORMATFILE se utiliza porque la frase
FORMAT es vlida en instrucciones WRITE para el archivo, y el formato de los
datos se especifica en las DDS para el archivo.
Cuando se ha especificado un dispositivo FORMATFILE, se puede obtener el
formato de la salida impresa de dos maneras:
1. Elija los formatos que han de imprimirse y en qu orden utilizando valores
apropiados en las frases FORMAT especificadas en las instrucciones WRITE.
Por ejemplo, utilice un formato una sola vez por pgina para producir un encabezamiento, y utilice otro formato para producir las lneas de detalle en la
pgina.
2. Elija las opciones apropiadas que han de tomarse cuando se imprime cada
formato estableciendo los valores de los indicadores y transfiriendo estos indicadores a la frase INDICATOR para la instruccin WRITE. Por ejemplo, los
campos pueden subrayarse, las lneas en blanco pueden producirse antes o
despus de imprimir el formato o puede saltarse la impresin de ciertos
campos.
El uso de descripciones externas para archivos de impresora disfruta de las
siguientes ventajas con respecto a las descripciones de programa:
Pueden imprimirse varias lneas mediante una instruccin WRITE. Cuando
una instruccin WRITE escribe varias lneas y se alcanza la condicin
END-OF-PAGE, la instruccin imperativa END-OF-PAGE se procesa cuando
se han imprimido todas las lneas. Es posible imprimir lneas en el rea de
desbordamiento, y en la pgina siguiente antes de que se procese la instruccin imperativa END-OF-PAGE.
La Figura 75 en la pgina 245 muestra un ejemplo de una aparicin de la condicin END-OF-PAGE en FORMATFILE.
Se pueden imprimir opcionalmente campos basndose en valores del indicador.
La edicin de los valores de campos se define fcilmente.
Es ms fcil el mantenimiento de formatos de impresin, especialmente los utilizados por mltiples programas.

244

COBOL/400 Gua del usuario

La utilizacin de la frase ADVANCING para archivos FORMATFILE origina la


emisin de un mensaje de error. El avance de lneas se controla en un archivo
FORMATFILE mediante palabras clave DDS, como por ejemplo SKIPA y SKIPB,
as como mediante el uso de nmeros de lnea.
Para los archivos FORMATFILE, la clusula LINAGE no es vlida.
5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
FRMTFILE.
3 3
AUTHOR.
PROGRAMMER NAME.
4 4
INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 5
DATE-WRITTEN. 2/2/89.
8 8
DATE-COMPILED. 5/24/94 14:29:31
.
7 7 ENVIRONMENT DIVISION.
8 8 CONFIGURATION SECTION.
9 9 SOURCE-COMPUTER. IBM-AS4.
1 1 OBJECT-COMPUTER. IBM-AS4.
11 11 INPUT-OUTPUT SECTION.
12 12 FILE-CONTROL.
13 13
SELECT PERSREPT ASSIGN TO FORMATFILE-PERSREPT-SI .1/
14 14
ORGANIZATION IS SEQUENTIAL.
15 15
SELECT PERSFILE ASSIGN TO DATABASE-PERSFILE
16 16
ORGANIZATION IS INDEXED
17 17
ACCESS MODE IS SEQUENTIAL
18 18
RECORD IS EXTERNALLY-DESCRIBED-KEY.
19 19 DATA DIVISION.
2 2 FILE SECTION.
21 21 FD PERSREPT
22 22
LABEL RECORDS ARE STANDARD.
23 23 1 PERSREPT-REC.
24 24
COPY DDS-ALL-FORMATS-O OF PERSREPT. .2/
25 +1
5 PERSREPT-RECORD PIC X(13).
+2\ FORMATO SALIDA:HEADING
DESDE ARCHIVO PERSREPT
DE BIBLIOT. XMPLIB
+3\
26 +4
5 HEADING-O
REDEFINES PERSREPT-RECORD.
27 +5
6 ORDERTYPE
PIC X(15).
+6\ FORMATO SALIDA:DETAIL
DESDE ARCHIVO PERSREPT
DE BIBLIOT. XMPLIB
+7\
28 +8
5 DETAIL-O
REDEFINES PERSREPT-RECORD. .3/
29 +9
6 NAME
PIC X(3).
3 +1
6 EMPLNO
PIC S9(6).
31 +11
6 BIRTHDATE
PIC X(6).
32 +12
6 ADDRESS1
PIC X(35).
33 +13
6 MARSTAT
PIC X(1).
34 +14
6 SPOUSENAME
PIC X(3).
35 +15
6 ADDRESS2
PIC X(2).
36 +16
6 NUMCHILD
PIC S9(2).
37 25 FD PERSFILE
38 26
LABEL RECORDS ARE STANDARD.
39 27 1 PERSFILE-REC.
4 28
COPY DDS-ALL-FORMATS-O OF PERSFILE.
41 +1
5 PERSFILE-RECORD PIC X(13).
+2\
FORMATO E-S:PERSREC
DESDE ARCHIVO PERSFILE
DE BIBLOTE. XMPLIB
+3\
+4\DEFINICIONES CLAVE PARA FORMATO DE REGISTRO PERSREC
+5\ NMERO
NOMBRE
RECUPERACIN
TIPO ALTSEQ
+6\
1
EMPLNO
ASCENDENTE
SIGNO
NO
42 +7
5 PERSREC
REDEFINES PERSFILE-RECORD.
43 +8
6 EMPLNO
PIC S9(6).
44 +9
6 NAME
PIC X(3).
45 +1
6 ADDRESS1
PIC X(35).
46 +11
6 ADDRESS2
PIC X(2).
47 +12
6 BIRTHDATE
PIC X(6).
48 +13
6 MARSTAT
PIC X(1).
49 +14
6 SPOUSENAME
PIC X(3).
5 +15
6 NUMCHILD
PIC S9(2).
51 29 WORKING-STORAGE SECTION.
52 3 77 HEAD-ORDER
PIC X(15)
53 31
VALUE "EMPLOYEE NUMBER".
54 32 1 PERSREPT-INDICS.
55 33
COPY DDS-ALL-FORMATS-O-INDIC OF PERSREPT. .4/

NOMCOPIA

FECH/CAM
2/1/94
3/22/94
1/27/94
1/27/94
2/4/94
3/1/94
1/27/94
1/27/94
1/27/94
1/27/94
1/27/94
1/27/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
2/4/94
1/27/94
1/27/94
2/4/94
2/4/94
2/4/94

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 75 (Parte 1 de 2). Ejemplo de la Condicin END-OF-PAGE

Captulo 9. Archivos de Impresora

245

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
56 +1
5 PERSREPT-RECORD.
+2\ FORMATO SALIDA:HEADING
DESDE ARCHIVO PERSREPT
DE BIBLIOT. XMPLIB
+3\
+4\
6 HEADING-O-INDIC.
+5\ FORMATO SALIDA:DETAIL
DESDE ARCHIVO PERSREPT
DE BIBLIOT. XMPLIB
+6\
57 +7
6 DETAIL-O-INDIC.
58 +8
7 IN1
PIC 1 INDIC 1.
34
59 35 77 EOF-FLAG
PIC X(1)
6 36
VALUE "".
61 37
88 NOT-END-OF-FILE
VALUE "".
62 38
88 END-OF-FILE
VALUE "1".
63 39 77 MARRIED
PIC X(1)
64 4
VALUE "M".
41
65 42 PROCEDURE DIVISION.
43 FIRST-SECT SECTION.
44 FIRST-PARA.
66 45
OPEN INPUT PERSFILE
46
OUTPUT PERSREPT.
67 47
PERFORM HEADING-LINE.
68 48
PERFORM PROCESS-RECORD UNTIL END-OF-FILE.
69 49
CLOSE PERSFILE
5
PERSREPT.
7 51
STOP RUN.
52
53 PROCESS-RECORD.
71 54
READ PERSFILE AT END SET END-OF-FILE TO TRUE.
73 55
IF NOT-END-OF-FILE THEN
74 56
PERFORM PRINT-RECORD. .5/
57
58 PRINT-RECORD.
75 59
MOVE CORR PERSREC TO DETAIL-O. .6/
76 6
IF MARSTAT IN PERSFILE-REC IS EQUAL MARRIED THEN .7/
77 61
MOVE B"1" TO IN1 IN DETAIL-O-INDIC
62
ELSE
78 63
MOVE B"" TO IN1 IN DETAIL-O-INDIC.
79 64
WRITE PERSREPT-REC FORMAT IS "DETAIL" .8/
65
INDICATORS ARE DETAIL-O-INDIC
8 66
AT EOP PERFORM HEADING-LINE. .9/
67 HEADING-LINE.
81 68
MOVE HEAD-ORDER TO ORDERTYPE
82 69
WRITE PERSREPT-REC FORMAT IS "HEADING".
7
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

NOMCOPIA
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

FECH/CAM

Figura 75 (Parte 2 de 2). Ejemplo de la Condicin END-OF-PAGE

246

.1/

El archivo de impresora descrito externamente se asigna al dispositivo


FORMATFILE.

.2/

La instruccin COPY de Formato 2 se utiliza para copiar los campos para el


archivo de impresora en el programa.

.3/

Tenga en cuenta que, a pesar de que los campos del formato DETAIL se
imprimirn en tres lneas separadas, estn definidos en un registro.

.4/

COPY-DDS se utiliza para copiar los indicadores utilizados en el archivo de


impresora del programa.

.5/

El prrafo PROCESS-RECORD procesa PRINT-RECORD para cada registro


de empleado.

.6/

Todos los campos en el registro de empleado se trasladan al registro para el


formato DETAIL.

.7/

Si el empleado est casado, se activa el indicador 01; si no, el indicador se


desactiva, evitando que se imprima el campo de nombre de la esposa en
DETAIL.

COBOL/400 Gua del usuario

.8/

Se imprime el formato DETAIL con el indicador 01, transferido para controlar


la impresin.

.9/

Si se ha excedido el nmero de lneas por pgina, se produce


END-OF-PAGE. El formato HEADING se imprime en la pgina siguiente.
AS/400 ESPECIFICACIONES DE DESCRIPCION DE DATOS

International Business Machines

A *

10

11

12

13

14

15

AR CH I VO

16

17

18

19

20

21

22

F I S I CO

23

24

25

26

27

DD S

28

29

30

31

P AR A

Descripcin

Tipo Datos/Desplazamiento Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

Nom bre
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

Nombre Condicin

Impreso en Espaa

Pgina

de

Tecla

32

33

34

35

36

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Com ent. (A/O/*)

Secuencia

Tipo de Formula rio

N mero d e

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nm ero de hojas por rea de re lleno puede variar lige ram ente.

37

38

Ubicacin

Funciones

Lnea

39

A R CH I VO

40

41

Pos

42

43

44

45

46

47

48

P E R S ONA L

49

50

51

E N

52

53

54

55

56

57

58

59

E J E MP L O

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

F OR MA T F I L E

A
A *

P E R S R EC

E MP L NO

N AM E

3 0

ADD R E S S 1

3 5

ADD R E S S 2

2 0

B I R T HDA T E

MA R S T A T

S P O U S E N AM E

A
A

N U MC H I L D
K

6 S

6
1
3 0
2 S

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 Utilizacin de Archivos de Impresora Descritos Externamente Asignados a un Dispositivo de FORMATFILE

Captulo 9. Archivos de Impresora

247

80

G X 2 1 - 9 8 9 1 - 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
Inter national

B usiness

Machines

*El

Archivo

Signo

nmero

de

hojas

por

rea

de

Impreso
relleno puede

Descripcin

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

10

1 1

1 2

1 3

1 4

1 5

A R C H I VO

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

I MP R E S OR A

2 7

2 8

2 9

D D S

Tipo
3 0

3 1

3 2

3 3

3 4

P A R A

3 5

(b/O /I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Datos/Desplazamiento Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

A *

Longitud

3 6

U t i l i z a c/i n

Nom bre

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Condicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero d e

Tecla

Fecha

Posiciones

Programador

3 7

3 8

Ubicacin

Funciones

Lnea

3 9

4 0

4 1

P o s

4 2

E J E MP L O

4 3

4 4

4 5

4 6

4 7

4 8

4 9

5 0

F O R MA T F

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

L E

A *
A

I ND A R A

H E AD I NG

1 5

A
3 3

OR D E R T Y P E

1 5

'

P E R S ON A L

S T A DO

'

'

I N E

P E D I DO

P O R

'

4 6
8 0 D A T E

9 3 T
1 1 5

L E )

S P AC E A ( 3 )

I P B ( 1 )

U ND E R L

R E F ( P E R S F

S K

E D T CD E ( Y )

I M E

' P AG I N A :

+ 1 P AGN B R

'

E D T CD E ( 3 )

A *
A

A *

I N E

D E T A I

S P AC E A ( 3 )

N AM E

E MP L NO

5 5

A
A

A *

I N E

I R T H D A T E

A D D R E S S 1

MA R S T A T

7 3

S P O U S E N AM E R

1 0 3

0 1

A *
A

8 7

I N E

'

'

F E C H A

D E

N AC I M I E N T O :

'

' D I R E CC I ON :

'

'

E S T AD O

C I V I

' N OM B R E

'

E S P O S A :

'

3
A D D R E S S 2

A
A

E MP L E A DO :

1 1
5 5

A
0 1

' N UM E R O

1 0 3 S P AC E A ( 1 )

'

I N E

7 3
8 7

' N OM B R E

1 1 U ND E R L

1 1 S P AC E B ( 1 )
5 5

N U MC H I

L D

' H I

J O S

'

7 3 E D T CD E ( 3 )

A
A
A

Figura 76 (Parte 2 de 2). Ejemplo de DDS de la Utilizacin de Archivos de Impresora Descritos Externamente Asignados a un Dispositivo de FORMATFILE

.1/

INDARA especifica que el archivo utilizar un rea de indicadores separada.

.2/

HEADING es el nombre de formato que proporciona encabezamientos para


cada pgina.

.3/

SKIPB(1) y SPACEA(3) se utilizan para:


1. Saltar a la lnea 1 de la pgina siguiente antes de que se imprima el
formato HEADING.
2. Dejar 3 lneas en blanco despus de que imprima el formato HEADING.

.4/

248

DATE, TIME y PAGNBR se utilizan para imprimir automticamente la fecha,


hora y nmero de pgina actual cuando se imprime el formato HEADING.

COBOL/400 Gua del usuario

8 0

.5/

DETAIL es el nombre de formato que se utiliza para imprimir la lnea de


detalle para cada empleado en el archivo de personal.

.6/

SPACEA(3) hace que se dejen tres lneas en blanco a la izquierda despus


de cada lnea de detalle de empleado.

.7/

SPACEA(1) hace que se imprima una lnea en blanco despus de que


imprima el campo BIRTHDATE. Como resultado, los campos subsiguientes
en el mismo formato se imprimen en una lnea nueva.

.8/

01 significa que estos campos slo se imprimen si el programa COBOL


activa el indicador 01 y lo transfiere cuando se imprime el formato DETAIL.

.9/

EDTCDE(3) se utiliza para eliminar los ceros a la izquierda cuando se


imprime este campo numrico.

Captulo 9. Archivos de Impresora

249

250

COBOL/400 Gua del usuario

Captulo 10. Archivos DISK y DATABASE


Los archivos de base de datos, que se asocian con los dispositivos COBOL de
DATABASE y DISK, pueden ser:
Archivos descritos externamente, cuyos campos se describen a OS/400
mediante las DDS
Archivos descritos por el programa, cuyos campos se describen en el programa que utiliza el archivo.
Todos los archivos de base de datos se crean mediante los mandatos Crear
Archivo de OS/400. Consulte el manual Gua para la Base de Datos para obtener
una descripcin sobre el mandato Crear Archivo para archivos de bases de datos.

Archivos DATABASE frente a Archivo DISK


La asignacin de un archivo a DISK en COBOL limita al usuario al proceso tradicional DISK. La utilizacin de DATABASE como dispositivo permite que el usuario
utilice las caractersticas especiales de COBOL/400, como por ejemplo formatos y
claves de registro duplicadas.

Mtodos de Proceso para Archivos DISK y DATABASE


Archivos Indexados COBOL
Un archivo indexado es un archivo cuya va de acceso se ha creado mediante
valores de claves. El usuario debe crear una va de acceso por clave para un
archivo indexado utilizando las DDS.
Para escribir programas en ANSI X3.23-1985 COBOL estndar que acceden a un
archivo indexado, es preciso crear un archivo con una serie de caractersticas
determinadas. La tabla siguiente lista estas caractersticas as como los elementos
que las controlan:

Copyright IBM Corp. 1994

Caracterstica

Control

El archivo debe ser un archivo fsico.

El mandato CL CRTPF

El archivo no puede tener registros con


valores de clave duplicados.

La palabra clave UNIQUE de


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 ascendente.

DDS

Las claves han de ser contiguas dentro del


registro.

DDS

Los campos de clave deben ser


alfanumricos. No pueden ser slo numricos.

DDS

El valor de la clave utilizada para poner en


secuencia debe incluir 8 bits de cada byte.

DDS

No puede especificarse una posicin inicial


para recuperar registros.

El mandato CL OVRDBF

251

Caracterstica

Control

No pueden utilizarse para el archivo palabras


clave a nivel de seleccionar/omitir.

DDS

Un archivo indexado se identifica mediante la clusula ORGANIZATION IS


INDEXED de la instruccin SELECT.
Los campos de clave identifican los registros en un archivo indexado. El usuario
especifica el campo de clave en la clusula RECORD KEY de la instruccin
SELECT. El tem de datos RECORD KEY debe definirse dentro de una descripcin de registro para el archivo indexado. Si hay mltiples descripciones de registro
para el archivo, slo una necesita contener el nombre de datos RECORD KEY. No
obstante, se accede a las mismas posiciones en la descripcin de registro que
contienen el tem de datos RECORD KEY en las otras descripciones de registro
como el valor KEY para cualquier referencia a otras descripciones para ese
archivo.
Se puede accederse a un archivo indexado de forma secuencial dinmicamente o
al azar mediante una clave.

RECORD KEYS Vlidas


Las DDS para el archivo especifican los campos a utilizar como campo de clave. Si
el archivo posee campos de clave mltiples, el campo de clave debe ser contiguo
en cada registro a no ser que se especifique RECORD KEY IS
EXTERNALLY-DESCRIBED-KEY.
Cuando las DDS especifican slo un campo clave para el archivo, RECORD KEY
debe ser un slo campo con la misma longitud que el campo clave definido en las
DDS.
Si una instruccin COPY de Formato 2 se especifica para el archivo, la clusula
RECORD KEY debe especificar una de las siguientes condiciones:
El nombre utilizado en las DDS para el campo de clave si el nombre no es una
palabra reservada de COBOL.
El nombre utilizado en las DDS para el campo de clave aadiendo -DDS al
final si el nombre es una palabra reservada de COBOL.
El nombre de datos definido en una descripcin de registro descrita por programa para el archivo, con la longitud apropiada y en la ubicacin correcta.
EXTERNALLY-DESCRIBED-KEY. Esta palabra clave especifica que las claves
definidas en DDS para cada formato de registro deben utilizarse para acceder
al archivo. No es preciso que estas claves sean contiguas. Pueden definirse
en distintas posiciones dentro del formato de registro.
Cuando las DDS especifican mltiples 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 mltiples campos de clave en las DDS. Si se especifica para el
archivo una instruccin COPY de Formato 2, tambin debe haber una descripcin
de registro descrita por programa para el archivo que define el nombre de datos
RECORD KEY con la longitud y ubicacin adecuada en el registro.

252

COBOL/400 Gua del usuario

Los tems contiguos son tems de grupo o elementales consecutivos en la Divisin de Datos que forman parte de una jerarqua de datos nica.

Referencia a una Clave Parcial


Una instruccin START genrica permite utilizar una clave parcial. Se necesita la
frase KEY IS.
Consulte el apartado Instruccin START de la publicacin COBOL/400 Reference
para obtener ms informacin acerca de las normas necesarias para especificar un
argumento de bsqueda que haga referencia a una clave parcial.
La Figura 77 en la pgina 254 muestra un ejemplo de instrucciones START genricas que utilizan un archivo descrito por el programa.

Captulo 10. Archivos DISK y DATABASE

253

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
7 7 FILE-CONTROL.
8 8
SELECT FILE-1 ASSIGN TO DISK-FILE1
9 9
ACCESS IS DYNAMIC RECORD KEY IS FULL-NAME IN FILE-1
1 1
ORGANIZATION IS INDEXED.
11 11 DATA DIVISION.
12 12 FILE SECTION.
13 13 FD FILE-1 LABEL RECORDS ARE STANDARD.
14 14 1 RECORD-DESCRIPTION.
15 15
3 FULL-NAME.
16 16
5 LAST-AND-FIRST-NAMES.
17 17
7 LAST-NAME
PIC X(2).
18 18
7 FIRST-NAME
PIC X(2).
19 19
5 MIDDLE-NAME
PIC X(2).
2 2
3 LAST-FIRST-MIDDLE-INITIAL-NAME REDEFINES FULL-NAME
21 21
PIC X(41).
22 22
3 REST-OF-RECORD
23/
23 24 PROCEDURE DIVISION.
25 START-PROGRAM.
24 26
OPEN INPUT FILE-1.
27\
28\ SITA EL ARCHIVO COMENZANDO CON REGISTROS QUE TENGAN EL APELLIDO
29\ "SMITH"
25 3
MOVE "SMITH" TO LAST-NAME.
26 31
START FILE-1 KEY IS EQUAL TO LAST-NAME
27 32
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR " LAST-NAME
28 33
GO-TO ERROR ROUTINE.
34\
35\
36\
37\
38\ SITA EL ARCHIVO COMENZANDO CON REGISTROS QUE TENGAN EL APELLIDO
39\ "SMITH" Y EL NOMBRE DE "ROBERT"
29 4
MOVE "SMITH" TO LAST-NAME.
3 41
MOVE "ROBERT" TO FIRST-NAME.
31 42
START FILE-1 KEY IS EQUAL TO LAST-AND-FIRST-NAMES
32 43
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
44
LAST-AND-FIRST-NAMES
33 45
GO-TO ERROR ROUTINE.
46\
47\
48\
49\
5\ SITA EL ARCHIVO COMENZANDO CON REGISTROS QUE TENGAN EL APELLIDO
51\ "SMITH", EL NOMBRE "ROBERT", Y LA INICIAL DEL SEGUNDO NOMBRE SEA "M"
34 52
MOVE "SMITH" TO LAST-NAME.
35 53
MOVE "ROBERT" TO FIRST-NAME.
36 54
MOVE "M" TO MIDDLE-NAME.
37 55
START FILE-1 KEY IS EQUAL TO LAST-AND-FIRST-MIDDLE-INITIAL-NAME
38 56
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
57
LAST-FIRST-MIDDLE-INITIAL-NAME
39 58
GO-TO ERROR ROUTINE.
59
6
61 ERROR-ROUTINE.
4 62
STOP-RUN.

NOMCOPIA

FECH/CAM

Figura 77. Instrucciones START que utilizan un archivo descrito por el programa

La Figura 78 y la Figura 79 muestran un ejemplo de instrucciones START genricas que utilizan un archivo descrito externamente.

254

COBOL/400 Gua del usuario

FUENTE DE DESCRIPCION DE DATOS


NUMSEC \... ... 1 ... ... 2 ... ... 3 ... ... 4 ... ... 5 ... ... 6 ... ... 7 ... ... 8
1
A
UNIQUE
2
A
R RDE
TEXT('DESCRIPCIN DE REGISTRO')
3
A
FNAME
2
TEXT('NOMBRE')
4
A
MINAME
1
TEXT('INICIAL/SEGUNDO NOMBRE')
5
A
MNAME
19
TEXT('RESTO DEL SEGUNDO NOMBRE')
6
A
LNAME
2
TEXT('APELLIDO')
7
A
PHONE
1
TEXT('NMERO DE TELFONO')
8
A
DATA
4
TEXT('DATOS RESTANTES')
9
A
K LNAME
1
A
K FNAME
11
A
K MINAME
12
A
K MNAME

FECH

Figura 78. Instrucciones START Genricas que Utilizan un archivo Descrito Externamente -- DDS

Captulo 10. Archivos DISK y DATABASE

255

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
7 7 FILE-CONTROL.
8 8
SELECT FILE-1 ASSIGN TO DATABASE-NAMES
9 9
ACCESS IS DYNAMIC RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
1 1
ORGANIZATION IS INDEXED.
11 11 DATA DIVISION.
12 12 FILE SECTION.
13 13 FD FILE-1 LABEL RECORDS ARE STANDARD.
14 14 1 RECORD-DESCRIPTION
15 15
COPY DDS-RDE IN NAMES-PUBS.
17 +1
+2\
DESDE FILE NAMES
DE BIBLIOTECA XMPLIB
+3\
DESCRIPCIN DE REGISTRO
18 +4
5 RDE.
+5\
CLAVE DE REG. PARA ARCH. INDEX. CLAVE'2 NOM. CAMPO CLAVE FNAME
.
19 +6
6 FNAME
PIC X(2).
+7\
NOMBRE
+8\
CLAVE ARCH. PARA ARCH. INDEX., CLAVE'3 NOMB. CAMPO CLAVE MINAME .
2 +9
6 MINAME
PIC X(1).
+1\
INICIAL SEGUNDO NOMBRE
+11\
CLAVE ARCH. PARA ARCH. INDEX., CLAVE'4 NOMB. CAMPO CLAVE MNAME
.
21 +12
6 MNAME
PIC X(19).
+13\
RESTO SEGUNDO NOMBRE
+14\
CLAVE ARCH. PARA ARCH. INDEX., CLAVE'1 NOMB. CAMPO CLAVE LNAME
.
22 +15
6 LNAME
PIC X(2).
+16\
APELLIDO
23 +17
6 PHONE
PIC S9(1).
COMP-3
+18\
NMERO TELFONO
24 +19
6 DATA-DDS
PIC X(4).
+2\
DATOS RESTANTES
25 16 66 MIDDLE-NAME RENAMES MINAME THRU MNAME.
17/
26 18 PROCEDURE DIVISION.
19 START PROGRAM.
27 2
OPEN INPUT FILE-1.
21\
22\ SITA EL ARCHIVO COMENZANDO CON LOS REGISTROS QUE TENGAN EL APELLIDO
23\ "SMITH"
28 24
MOVE "SMITH" TO LNAME.
29 25
START FILE-1 KEY IS EQUAL TO LNAME
3 26
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR " LNAME
31 27
GO TO ERROR-ROUTINE.
28\
.
29\
.
3\
.
31\
32\ SITA EL ARCHIVO COMENZANDO CON LOS REGISTROS QUE TENGAN EL APELLIDO
33\ "SMITH" Y EL NOMBRE "ROBERT"
32 34
MOVE "SMITH" TO LNAME.
33 35
MOVE "ROBERT" TO FNAME.
34 36
START FILE-1 KEY IS EQUAL TO LNAME, FNAME
35 37
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
38
LNAME " " FNAME
36 39
GO TO ERROR-ROUTINE.
4\
.
41\
.
42\
.
43\
44\ SITA EL ARCHIVO COMENZANDO CON REGISTROS QUE TENGAN EL APELLIDO
45\ "SMITH", EL NOMBRE "ROBERT", Y LA INICIAL DEL SEGUNDO NOMBRE SEA "M"
32 46
MOVE "SMITH" TO LNAME.
33 47
MOVE "ROBERT" TO FNAME.
33 48
MOVE "M" TO MINAME.
34 49
START FILE-1 KEY IS EQUAL TO LNAME, FNAME, MINAME
35 5
INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
51
LNAME SPACE FNAME SPACE MINAME
42 52
GO TO ERROR-ROUTINE.
53
54
55 ERROR-ROUTINE.
56
STOP-RUN.

NOMCOPIA

RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE
RDE

Figura 79. Instrucciones START Genricas que Utilizan un Archivo Descrito Externamente

256

COBOL/400 Gua del usuario

FECH/CAM

Consideraciones Sobre Archivos Lgicos


Cuando un archivo lgico con mltiples formatos de registro, cada uno con campos
de clave asociados, se procesa como archivo indexado en COBOL, se aplican las
restricciones y consideraciones siguientes:
La frase FORMAT debe especificarse en todas las instrucciones WRITE para
el archivo a menos que exista el Programa Selector de Formato de Registro y
se haya especificado en el parmetro FMTSLR del mandato Crear Archivo
Lgico (CRTLF), el mandato Cambiar Archivo Lgico (CHGLF) o el mandato
Alterar Temporalmente Archivo de Base de Datos (OVRDBF). Para obtener
ms informacin acerca de la utilizacin de programas selectores de formato,
consulte la publicacin Gua para la Base de Datos.
Si la modalidad de acceso es RANDOM o DYNAMIC, y no se especifica para
el archivo la frase DUPLICATES, la frase FORMAT debe especificarse en
todas las instrucciones DELETE y REWRITE.
Cuando no se especifica la frase FORMAT, el sistema utiliza solamente la
parte del tem de datos RECORD KEY que es comn a todos los formatos de
registro del archivo como la clave para la instruccin de E/S. Cuando se especifica la frase FORMAT, el sistema utiliza como clave slo la parte del tem de
datos RECORD KEY que se define para el formato de registro especificado.
Consulte la publicacin Gua para la Base de Datos para obtener ms informacin sobre el proceso de archivos lgicos.
Cuando se especifica *NONE como el primer campo de clave para cualquier
formato en un archivo, slo se puede acceder a los registros secuencialmente.
Cuando un archivo se lee al azar:
Si se especifica un nombre de formato, se devuelve el primer registro con
el formato especificado.
Si no se especifica un nombre de formato, se devuelve el primer registro
del archivo.
En ambos casos, se hace caso omiso del tem de datos RECORD KEY.
Para un campo de clave definido por programa:
Los campos de clave dentro de cada formato de registro deben ser contiguos.
El primer campo de clave para cada formato de registro debe comenzar en
la misma posicin relativa dentro de cada registro.
La longitud del tem de datos RECORD KEY debe ser igual a la longitud
de la clave ms larga de cualquier formato del archivo.
Para una EXTERNALLY-DESCRIBED-KEY:
Los campos de clave dentro de cada formato de registro pueden no ser
contiguos.
Los campos de clave pueden comenzar en posiciones distintas en cada
formato de registro.
La Figura 80 en la pgina 258 y la Figura 81 en la pgina 259 muestran ejemplos
de cmo utilizar las DDS para describir la va de acceso para archivos indexados.

Captulo 10. Archivos DISK y DATABASE

257

G X 2 1 - 9 8 9 1 - 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
Inter national

Business

Machines

*El

Archivo

Signo

nm e ro

de

hojas

por

rea

de

Impreso
re lleno

Descripcin

puede

variar

Pgina

U M / 0 5 0 *
en

Espaa

ligeramente.

de

Instrucciones
de Grabacin

1 0

1 1

1 2

1 3

1 4

1 5

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

(b/O/I/B/H/M/N/P)

Referencia (R)

Reservado

Nombre
1 7

Tipo Datos/Desp lazamien to Teclado

(/b / R / H / J / K / S / O )
1 6

Tipo

No (N)

Indicador

No (N)

Indicador

Espec

(A/O/*)
7

Longitud

3 6

U t i l i z a c/i n

N om b re

D ecimales

Indicador

de
2

And/Or/Coment.

Tipo
1

Nombre Co ndicin

No (N)

Secuencia

Formula rio

Condicionamiento

N mero de

Tecla

Fecha

Posiciones

Programador

3 7

3 8

F O R MA T A

Funciones

Lnea

3 9

4 0

4 1

P os

4 2

4 3

4 4

4 5

4 6

P F

4 7

4 8

F L D A

OR D E R N

F L D B
K

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

' V I A

ACC E S O

P A R A

A R C

I ND E X A DO '

1 4
5 S

1 0 1

OR D E R N

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
A

Figura 80. Utilizacin de Especificaciones de Descripcin de Datos para Definir la Va de Acceso de un Archivo

Las especificaciones de descripcin de datos deben utilizarse para crear la va de


acceso para un archivo indexado descrito por programa.
En las DDS para el formato de registro FORMATA del archivo lgico ORDDTLL, el
campo ORDERN, que tiene una longitud de cinco dgitos, se define como el campo
de clave. La definicin de ORDERN como campo de clave establece el acceso
por clave para este archivo. Otros dos campos, FLDA y FLDB, describen las posiciones restantes en este registro como campos de tipo carcter.
El campo de entrada descrito por programa ORDDTLL se describe en la seccin
FILE-CONTROL de la clusula SELECT como un archivo indexado.

258

COBOL/400 Gua del usuario

8 0

L E ( OR D D T L P )

T E X T

Ubicacin

Las descripciones COBOL de cada campo en la entrada FD deben coincidir con la


descripcin correspondiente en el archivo DDS. El tem de datos RECORD KEY
debe definirse como entero numrico de cinco dgitos empezando en la posicin 15
del registro.
AS/400 ES PECIFICACIONES DE DESCRIPCION DE DATOS
International Business Machines

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Descripcin

32

33

34

Tipo Datos/Desp lazamien to Teclado

No (N)

Indicador

No (N)

Indicador

Indicador
9

Longitud

Referencia (R)

N om b re
Reservado

T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )

Nombre Co ndicin

35

36

37

38

F OR MA T
F L DA

OR D E R N

A
A

de

Ubicacin

Funciones

Lnea

39

40

41

Pos

42

43

44

45

46

47

48

49

50

51

52

53

T E X T ( ' V I A

Pgina

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

P F I L E ( OR DD T L P )

Impreso en Espaa

Tecla

U t i l i z a c/i n ( b / O / I / B / H / M / N / P )

de Grabacin

D ecimales

And/Or/Coment. (A/O/*)

Secuencia

Tipo de Formula rio

N mero de

No (N)

Condicionamiento

Signo

Instrucciones
Fecha

Posiciones

Archivo
Programador

GX21-9891-0 UM/050*

*El nm e ro de hojas por rea de re lleno puede variar lige ram ente .

ACC E S O

P AR A

ARC

I ND E X ADO ' )

1 4
5 S

I T EM

F L DB

9 6

OR D E R N
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 Descripcin de Datos para la Definicin de la Va de acceso (una Clave Compuesta)
de un Archivo Indexado

En este ejemplo, las especificaciones de descripcin de datos definen dos campos


de clave para el formato de registro FORMAT en el archivo lgico ORDDTLL.
Para los dos campos a utilizar como clave compuesta para un archivo indexado
descrito por programa, los campos de clave deben ser contiguos en el registro.
La descripcin COBOL de cada campo debe coincidir con la descripcin correspondiente en el archivo DDS. En la clusula RECORD-KEY de la entrada de

Captulo 10. Archivos DISK y DATABASE

259

control de archivo debe definirse un tem de diez caracteres que empiece en la


posicin 15 del registro. Las descripciones COBOL de los campos DDS ORDERN
e ITEM deberan subordinarse al tem de 10 caracteres en la clusula RECORD
KEY.

Archivos Relativos COBOL


Un archivo relativo COBOL es un archivo que se va a procesar mediante un
nmero relativo de registro. Para procesar un archivo mediante un nmero relativo
de registro, se debe especificar ORGANIZATION IS RELATIVE en la instruccin
SELECT para el archivo. Se puede acceder a un archivo relativo de forma secuencial, al azar mediante un nmero de registro o dinmicamente.
Para escribir programas en COBOL ANSI X3.23-1985 estndar que accedan a un
archivo relativo, es preciso crear el archivo con unas caractersticas determinadas.
En la siguiente tabla se listan estas caractersticas as como los elementos que las
controlan.
Caracterstica

Control

El archivo debe ser un archivo fsico.

El mandato CL CRTPF

El archivo no puede ser un archivo compartido

El mandato CL CRTPF

No puede especificarse ninguna clave en el


archivo.

DDS

No puede especificarse una posicin inicial


para recuperar registros.

El mandato CL OVRDBF

No pueden utilizarse para el archivo palabras


clave a nivel de seleccionar/omitir.

DDS

No se pueden volver a utilizar los registros del


archivo.

El mandato CL CRTPF

Para un archivo COBOL con una organizacin RELATIVE, el mandato CL Reorganizar Miembro de Archivo Fsico (RGZPFM) puede:
Eliminar todos los registros suprimidos del archivo. Debido a que COBOL
inicializa todos los registros del archivo relativo a registros suprimidos, se eliminar del archivo cualquier registro que no se haya grabado explcitamente.
Los nmeros relativos de registro de todos los registros que estn despus del
primer registro suprimido en el archivo se cambiarn.
Cambiar los nmeros relativos de registro si el archivo tiene una clave y se
modifica la secuencia de llegada para que coincida con una secuencia de
clave (con el parmetro KEYFILE).
Adems, el mandato CL Cambiar Archivo Fsico (CHGPF) que da soporte la opcin
REUSEDLT, puede modificar el orden de los registros recuperados o grabados
cuando el archivo trabaja de forma secuencial, ya que permite volver a utilizar los
registros eliminados.

260

COBOL/400 Gua del usuario

Archivos Secuenciales COBOL


Un archivo secuencial COBOL es un archivo en el que se procesan registros en el
mismo orden en que han sido colocados en el archivo, es decir, en secuencia de
llegada. Por ejemplo, el dcimo registro colocado en el archivo ocupa la dcima
posicin de registro y ser el dcimo registro que se procese. Para procesar un
archivo como secuencial, es preciso especificar ORGANIZATION IS SEQUENTIAL
en la clusula SELECT o hacer caso omiso de la clusula ORGANIZATION. A un
archivo secuencial slo puede accederse secuencialmente.
Para escribir programas en COBOL ANSI X3.23-1985 estndar que accedan a un
archivo secuencial, es preciso crear dicho archivo a partir de unas caractersticas
determinadas. En la siguiente tabla se listan estas caractersticas as como los
elementos que las controlan.
Caracterstica

Control

El archivo debe ser un archivo fsico.

El mandato CL CRTPF

El archivo no puede ser un archivo compartido

El mandato CL CRTPF

No puede especificarse ninguna clave en el


archivo.

DDS

El archivo debe tener un tipo de archivo de


DATA.

El mandato CL CRTPF

No puede utilizarse la edicin de campo.

DDS

No puede especificarse informacin de lnea


ni posicin.

DDS

No pueden especificarse palabras clave de


espaciar ni saltar.

DDS

No pueden utilizarse los indicadores.

DDS

No pueden utilizarse funciones suministradas


por el sistema, tales como fecha, hora y
nmero de pgina.

DDS

No pueden utilizarse para el archivo palabras


clave a nivel de seleccionar/omitir.

DDS

No se pueden volver a utilizar los registros del


archivo.

El mandato CL CRTPF

Para conservar la secuencia de registros de un archivo que se abre en modalidad


de E/S (actualizacin), no modifique el archivo, ya que de lo contrario no podr
volver a utilizar los registros que contenga. Es decir, no utilice el parmetro CL
Cambiar Archivo Fsico (CHGPF) que da soporte a la opcin REUSEDLT.
Nota: El compilador COBOL/400 no comprueba si el dispositivo asociado con el
archivo externo es del tipo especificado en la parte de dispositivo del
nombre de asignacin. El dispositivo especificado en el nombre de asignacin debe coincidir con el dispositivo real al que se asigna el archivo.
Consulte la seccin Clusula ASSIGN de la publicacin COBOL/400
Reference para obtener ms informacin.

Captulo 10. Archivos DISK y DATABASE

261

Consideraciones sobre la Organizacin de Archivos COBOL y la Va


de Acceso del Archivo AS/400
EN COBOL, puede procesarse un archivo con una va de acceso por secuencia de
claves como un archivo con una organizacin INDEXED, RELATIVE o
SEQUENTIAL.
Para procesar un archivo en secuencia por claves como un archivo relativo
COBOL, debe ser un archivo fsico, o un archivo lgico cuyos miembros se basen
en un miembro del archivo fsico. Para procesar un archivo en secuencia de
claves como un archivo secuencial en COBOL, debe ser un archivo fsico, o un
archivo lgico que se base en un miembro del archivo fsico y que no contenga
lgica de seleccin/omisin.
Una archivo con una va de acceso en secuencia de llegada puede procesarse en
COBOL como un archivo con organizacin RELATIVE o SEQUENTIAL. El archivo
debe ser un archivo fsico o lgico en el que cada miembro del archivo lgico nicamente est basado en un solo miembro del archivo fsico.
Cuando se especifica el acceso secuencial para un archivo lgico, se accede a los
registros del archivo mediante la va de acceso creada con las opciones de
creacin de archivos.

Mtodos de Proceso de Archivos


La Figura 82 en la pgina 264 muestra los mtodos de proceso vlidos, as como
la operacin esperada para las combinaciones de organizacin, modalidad de
acceso, estado de apertura, verbo de E/S y modificadores de verbo de E/S.
Se borran todos los archivos de base de datos fsicos que se abren para OUTPUT.
Los archivos de bases de datos con organizacin RELATIVE y con modalidad de
acceso dinmica o al azar, tambin 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 pgina 263
resume las condiciones que los afectan.

262

COBOL/400 Gua del usuario

Tabla 4. Inicializacin de Archivos Relativos de Salida


Acceso a
Archivos y
Especificaciones
CL

Condiciones
durante
la Apertura

Condiciones
durante
el Cierre

Lmite de Archivo

Secuencial
*INZDLT

Los registros no
escritos
se inicializan

Todos los incrementos

Secuencial
*INZDLT
Tamao *NOMAX

CLOSE satisfactorio
El estado de
archivo es 0Q

Hasta el lmite de
registros escritos

Secuencial
*NOINZDLT

Hasta el lmite de
registros escritos

Al azar o dinmicamente

Los registros
se inicializan
Se abre el archivo

Todos los incrementos

Al azar o dinmicamente
Tamao *NOMAX

OPEN no satisfactorio
Estado de archivo
9Q

Archivo vaco

Para extender el lmite de archivo ms all del nmero actual de registros, pero
permaneciendo dentro del tamao del archivo, utilice el mandato INZPFM para
aadir registros eliminados antes de procesar el archivo. Es preciso efectuar esta
operacin si recibe un estado de archivo de 0Q y todava quiere aadir ms registros al archivo.
Cualquier intento de ampliar un archivo relativo ms all de su tamao actual da
como resultado una violacin de lmite.
Para recuperar el estado de archivo de 9Q, utilice el mandato CHGPF tal como se
describe en el texto de mensaje en tiempo de ejecucin asociado.
Las demoras de larga duracin son normales cuando hay gran cantidad de registros (ms de un 1 000 000) que se deben inicializar para registros suprimidos
cuando se ejecuta la instruccin CLOSE.
Cuando la primera instruccin OPEN para el archivo no es OPEN OUTPUT, los
archivos relativos deben borrarse e inicializarse con registros suprimidos antes de
utilizarlos. Consulte la descripcin sobre los mandatos CLRPFM y INZPFM en el
manual CL Reference para obtener ms informacin.
El parmetro RECORDS del mandato INZPFM debe especificar *DLT. Las alteraciones temporales deben aplicarse cuando COBOL procesa las operaciones de
borrado e inicializacin, pero no cuando se procesan con mandatos CL.
Las demoras de larga duracin son normales en el proceso OPEN OUTPUT para
archivos sumamente grandes (ms de 1 000 000 registros) a los que se accede en
modalidad dinmica o al azar.

Captulo 10. Archivos DISK y DATABASE

263

SELECT

CLAUSE
ORG ACC DEV OPEN READ WRITE START REWRITE DELETE CLOSE FORMAT KEY IS

S S ANY INPUT
X

S S ANY OUTPUT
X(F1)

A1

S S ANY I-O

S S ANY EXTEND

I S D/DB INPUT
X

B1

C1

I S D/DB OUTPUT
X(F1)

B1

C1

I S D/DB I-O

B1

C1

I R D/DB INPUT
X

B1

D1

I R D/DB OUTPUT
X(F1)

B1

D1

I R D/DB I-O

X
X

B1

D1

I D D/DB INPUT
X

B1

D1

I D D/DB OUTPUT
X(F1)

B1

D1

I D D/DB I-O

X
X

B1

D1

R S D/DB INPUT
X

C1

R S D/DB OUTPUT
X(G1)

C1

R S D/DB I-O

C1

R R D/DB INPUT
X

E1

R R D/DB OUTPUT
X(G1)

E1

R R D/DB I-O

X
X

E1

R D D/DB INPUT
X

E1

R D D/DB OUTPUT
X(G1)

E1

R D D/DB I-O

X
X

E1

T S W
I-O

X
X

H1

T D W
I-O
X(K1) X(K1)

I1

J1

ORG:
ACC:
DEV:

S = Secuencial
S = Secuencial
ANY = Cualquier dispositivo

R = Relativo
R = Al azar
D
= DISK

I = Indexado
D = Dinmico
DB = DATABASE

T = TRANSACTION

W
= WORKSTATION

Figura 82. Tabla Resumen de Mtodos de Proceso

Los prrafos siguientes explican las claves utilizadas en la Figura 82.


X

Se permite la combinacin.

A1

Se requiere la frase FORMAT para archivos FORMATFILE con formatos mltiples y no se permite para todos los otros archivos de dispositivo.

B1

La frase FORMAT es opcional para archivos DATABASE y no se permite


para archivos DISK. Si no se especifica la frase FORMAT, se utiliza el
nombre de formato por omisin del archivo. El nombre de formato por
omisin del archivo es el primer nombre de formato definido en el archivo.
Puede utilizarse el registro especial DB-FORMAT-NAME para recuperar el
nombre de formato que se ha utilizado en la ltima operacin satisfactoria de
E/S.

C1

Se hace caso omiso de la frase KEY en la clusula SELECT excepto en las


instrucciones START. Si no se especifica la frase KEY en la instruccin
START, la frase RECORD KEY o RELATIVE KEY de la clusula SELECT se
utiliza y entonces se asume KEY =.

D1

Se utiliza la frase KEY con la clusula SELECT excepto para la instruccin


START. Si no se especifica la frase KEY en la instruccin START, se utiliza
la frase RECORD KEY en la clusula SELECT y se asume KEY =.
NEXT, PRIOR, FIRST, o LAST slo pueden especificarse en la instruccin
READ para archivos DATABASE con acceso DYNAMIC. Si se especifica
NEXT, PRIOR, FIRST o LAST, se hace caso omiso de la frase KEY de la
clusula SELECT.

264

COBOL/400 Gua del usuario

E1

Se utiliza la frase RELATIVE KEY en la clusula SELECT.


La frase NEXT slo puede especificarse en la instruccin READ para un
archivo con modalidad de acceso DYNAMIC. Si se especifica NEXT, se hace
caso omiso de la frase KEY en la clusula SELECT.
El tem de datos RELATIVE KEY se actualiza con el nmero relativo de
registro para archivos con acceso secuencial en operaciones READ.

F1

Se borra un archivo fsico abierto para salida.

G1

Se borra un archivo fsico abierto para salida y se inicializa a registros suprimidos. Existe una serie de excepciones segn el tamao del archivo y las
opciones especificadas. Para obtener ms informacin, consulte la Tabla 4
en la pgina 263.

H1

La frase FORMAT es necesaria para la instruccin WRITE.

I1

La frase FORMAT es necesaria para distinguir entre los registros del subarchivo y el registro de control del subarchivo. El nombre del formato de
registro de control WRITE FORMAT IS visualiza el subarchivo, pero se necesita un nombre de formato de registro de control READ FORMAT IS para que
los datos puedan entrarse y al mismo tiempo para que la entrada del operador de los registros del subarchivo se coloque en el subarchivo.

J1

Se utiliza la frase RELATIVE KEY en la clusula SELECT para las instrucciones READ, WRITE y REWRITE que utilizan la frase SUBFILE, excepto
cuando READ SUBFILE NEXT MODIFIED utilice el nmero relativo de
registro actual del sistema en lugar del tem de datos RELATIVE KEY. El
tem de datos RELATIVE KEY se actualiza con el nmero relativo de registro
para registros del subarchivo en las instrucciones READ con la clusula
NEXT MODIFIED.

K1

Se requiere la frase SUBFILE cuando una operacin de E/S trata con un


registro particular en lugar de con un archivo completo.

Consideraciones sobre el Archivo Descendente


Los archivos creados con una secuencia en clave descendente (en DDS) provocan
que las frases NEXT, PRIOR, FIRST y LAST de la instruccin READ se comporten
de forma exactamente opuesta a la de un archivo con una secuencia de clave
ascendente. En la secuencia de clave descendente, los datos se ubican a partir
del valor ms alto del campo de clave hasta el valor ms bajo de dicho campo.
Por ejemplo, READ FIRST recupera el registro con el valor de campo ms alto,
mientras que READ LAST recupera el registro del valor de campo ms bajo. Los
archivos que tienen una secuencia de clave descendente tambin 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.

Captulo 10. Archivos DISK y DATABASE

265

266

COBOL/400 Gua del usuario

Captulo 11. Consideraciones de Programacin en


COBOL/400
Este captulo describe:
La emisin de un mandato CL desde un programa COBOL
La frase CORRESPONDING
La clusula LIKE
La modificacin de referencias
Cmo deshacer edicin
Consideraciones sobre el rendimiento.
Interfaz de Programacin de Uso General

Emisin de un Mandato CL desde un Programa COBOL


El usuario podr emitir un mandato CL desde un programa COBOL mediante una
llamada (CALL) a QCMDEXC.
En el programa ejemplo siguiente, la instruccin CALL a QCMDEXC (en el nmero de
secuencia 001600) da como resultado el proceso del mandato CL Aadir Entrada
de Lista de Bibliotecas (ADDLIBLE) (en el nmero de secuencia 001100). La terminacin satisfactoria del mandato CL da como resultado la adicin de la biblioteca, COBOLTEST, a la lista de bibliotecas.

1
2
3
4
5
6
7
8
9
1
11
12
13
14
15
16
17

-A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..
IDENTIFICATION DIVISION.
PROGRAM-ID. CMDXMPLE.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-AS4.
OBJECT-COMPUTER. IBM-AS4.
DATA DIVISION.
WORKING-STORAGE SECTION.
1 PROGRAM-VARIABLES.
5 CL-CMD
PIC X(33)
VALUE "ADDLIBLE COBOLTEST".
5 PACK-VAL
PIC 9(1)V9(5) COMP-3
VALUE 18.
PROCEDURE DIVISION.
MAINLINE.
CALL "QCMDEXC" USING CL-CMD PACK-VAL.
STOP RUN.

Nota: No utilice el mandato Reclamar Recurso (RCLRSC) en esta situacin, ya


que cancela todos los programas superiores en la pila de programas de
forma que la instruccin STOP RUN en el programa causara una excepcin en tiempo de ejecucin.
Para ms informacin acerca de QCMDEXC, consulte la publicacin CL Gua del
Programador.
Fin de Interfaz de Programacin de Uso General

Copyright IBM Corp. 1994

267

Utilizacin de la Frase CORRESPONDING


En el programa ejemplo siguiente, la instruccin ADD CORRESPONDING en el
nmero de secuencia 000270 aade GROUP1 ITEM1 al GROUP2 ITEM1 y
GROUP1 ITEM2 al GROUP2 ITEM2. La instruccin MOVE CORRESPONDING en
el nmero de secuencia 000290 mueve GROUP1 ITEM1, ITEM2, ITEM3 e ITEM4
al GROUP2 ITEM1, ITEM2, ITEM3 e ITEM4.
La instruccin MOVE CORRESPONDING en el nmero de secuencia 000300 no
se procesa porque no hay tems correspondientes que mover y se genera un
mensaje de error.
La Figura 83 en la pgina 269 se ha producido con la opcin PRTCORR activada.

268

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
XMPLIB/CORR
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
CORRPHRASE.
3 3
AUTHOR.
PROGRAMMER NAME.
4 4
INSTALLATION. TORONTO COBOL DEVELOPMENT CENTRE.
5 5
DATE-WRITTEN. 5/24/91.
6 6
DATE-COMPILED. 5/24/94 11:9:11
.
7 7 ENVIRONMENT DIVISION.
8 8 CONFIGURATION SECTION.
9 9 SOURCE-COMPUTER. IBM-AS4.
1 1 OBJECT-COMPUTER. IBM-AS4.
11 11 DATA DIVISION.
12 12 WORKING-STORAGE SECTION.
13 13 1 GROUP1.
14 14
5 ITEM1
PIC 99
VALUE 1.
15 15
5 ITEM2
PIC 99
VALUE 2.
16 16
5 ITEM3
PIC X(1)
VALUE "GREEN".
17 17
5 ITEM4
PIC X(1)
VALUE "BLUE".
18 18 1 GROUP2.
19 19
5 ITEM1
PIC 99
VALUE 8.
2 2
5 ITEM2
PIC 99
VALUE 9.
21 21
5 ITEM3
PIC XXBX(8)
VALUE SPACES.
22 22
5 ITEM4
PIC X(1)
VALUE SPACES.
23 23 1 GROUP3.
24 24
5 SPECIAL PIC XX.
25 25 PROCEDURE DIVISION.
26 MAINLINE.
26 27
ADD CORRESPONDING GROUP1 TO GROUP2.
\
\\ tems CORRESPONDING para instruccin 26:
\
\\
ITEM1
\
\\
ITEM2
\
\\ Fin de tems CORRESPONDING para instruccin 26
27 28
SUBTRACT CORRESPONDING GROUP1 FROM GROUP2.
\
\\ tems CORRESPONDING para instruccin 27:
\
\\
ITEM1
\
\\
ITEM2
\
\\ Fin de tems CORRESPONDING para instruccin 27
28 29
MOVE CORRESPONDING GROUP1 TO GROUP2.
\
\\ tems CORRESPONDING para instruccin 28:
\
\\
ITEM1
\
\\
ITEM2
\
\\
ITEM3
\
\\
ITEM4
\
\\ Fin de tems CORRESPONDING para instruccin 28
29 3
MOVE CORRESPONDING GROUP3 TO GROUP2.
\
\\ tems CORRESPONDING para instruccin 29:
\
\\
No se han encontrado tems CORRESPONDING
\
\\ Fin de tems CORRESPONDING para instruccin 29
3 31
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
XMPLIB/CORR
INST
\
29 MSGID: LBL336 GRAVEDAD: 1 NUMSEC: 3
Mensaje . . . . :
No se han encontrado tems CORRESPONDING. Sentencia
ignorada.
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \
Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
1

Registros fuente ledos . . . . . . :


31
Registros de copia ledos . . . . . :

Miembros de copia procesados . . . :

Errores de secuencia . . . . . . . :

Mensaje de gravedad ms alta emitido:


1
LBL91 Programa CORR creado en biblioteca XMPLIB.
\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 83. Ejemplo de la Frase CORRESPONDING

Captulo 11. Consideraciones de Programacin en COBOL/400

269

Ampliacin de IBM

Clusula LIKE
La clusula LIKE sirve para definir las caractersticas PICTURE, USAGE, SIGN y
BLANK WHEN ZERO de un nombre de datos copindolas de un nombre de datos
definido con anterioridad. LIKE slo puede referirse a un nombre de datos o un
nombre de ndice, y tales nombres deben calificarse nicamente si se han definido
anteriormente. Tambin sirve para cambiar la longitud de los nombres de datos
definidos por el usuario.
Esta clusula es particularmente til, ya que el usuario puede utilizarla para definir
los identificadores en la Seccin de Almacenamiento del programa que tengan los
mismos atributos como variables definidas utilizando la instruccin 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, slo que con un byte ms, escriba:
PROVINCE LIKE STATE (+1)
Este ejemplo le muestra cmo puede crear el tem de datos WS-KEY3 con los
mismos atributos que el tem de datos KEY3 en la Seccin de Almacenamiento de
Trabajo:
5763CB1 V3RM5
Fuente AS/4 COBOL
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
14
FILE SECTION.
15
FD FILE1.
16
1 FILE1-REC.
17
COPY DDS-ALL-FORMATS OF COPYDDS2.
+1
5 COPYDDS2-RECORD PIC X(2).
+2\
FORMATO E-S: RECORD1 DESDE ARCHIVO COPYDDS2 DE BIBLIOTECA COPYLIB
+3\
+4\LAS DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO RECORD1
+5\ NUMERO
NOMBRE
RECUPERAC.
TIPO
+6\ 1
KEY1-DDS
ASCENDENTE
+7\
NOMBRE CLAVE ORIGINAL DEL ARCHIVO FSICO
+8
5 RECORD1
REDEFINES COPYDDS2-RECORD.
+9
6 KEY3
PIC X(8).
+1
6 FILLER REDEFINES KEY3.
+11
7 KEY1-DDS
PIC X(4).
+12
7 FILLER
PIC X(4).
+13
6 DATA1
PIC X(12).
18 WORKING-STORAGE SECTION.
19 1 WS-KEY3 LIKE KEY3.
\ PICTURE IS X(8)

Figura 84. COPY DDS con la Clusula LIKE.

La clusula LIKE no puede utilizarse conjuntamente con las clusulas REDEFINES, SIGN, USAGE o PICTURE. Si utiliza alguna de estas clusulas con la
clusula LIKE, se producir un error de duplicacin. Igualmente, slo puede especificarse BLANK WHEN ZERO conjuntamente con la clusula LIKE si el atributo
BLANK WHEN ZERO no ha sido heredado por la clusula LIKE.

270

COBOL/400 Gua del usuario

Una clusula LIKE vlida tiene uno de los formatos siguientes:


nombre-datos-1 clusula LIKE xxxxx.
nombre-datos-1 xxxxx clusula LIKE.
nombre-datos-1 xxxxx clusula LIKE xxxxx.
Las xxxxx son una clusula o una combinacin de las clusulas siguientes:
JUSTIFIED, SYNCHRONIZED, BLANK WHEN ZERO, VALUE, OCCURS.
El ejemplo siguiente muestra lo que la clusula LIKE puede hacer:
1

INCOME.
5 ANNUAL-WAGES
PIC 9(6)V9(2) COMP-3.
1 YTD-WAGES LIKE ANNUAL-WAGES.
\ PICTURE IS 9(6)V9(2)
\ USAGE IS PACKED-DECIMAL
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 FAMILY-NAME
PIC X(2)
1 GIVEN-NAME LIKE FAMILY-NAME.
\ PICTURE IS X(2)

VALUE "JONES".

1
1

EMPLOYEE-NUMBER
PIC X(6).
DEPARTMENT-MEMBERS.
5 DEPT-EMPLOYEE-NUMBER LIKE EMPLOYEE-NUMBER
OCCURS 1 TIMES.
\ PICTURE IS X(6)
Nota: DEPARTMENT-MEMBERS, en el ejemplo anterior, tiene una longitud de 60
bytes.

5 TENANT-NAME
PIC X(2) OCCURS 1 TIMES.
RENEWAL-RECORD.
5 RENEWAL-MONTH PIC X(3).
5 RENEWAL-NAME LIKE TENANT-NAME.
\ PICTURE IS X(2)
1

Nota: RENEWAL-RECORD, en el ejemplo anterior, slo tiene una longitud de 23


bytes.
La parte de PICTURE del comentario generado se muestra en un formato conciso.
Nota: Un campo numrico con el atributo BLANK WHEN ZERO se considera un
campo numrico editado.

Captulo 11. Consideraciones de Programacin en COBOL/400

271

ORDER-DETAILS.
5 ORDER-TYPE
PIC XX.
5 ORDER-CODE LIKE ORDER-TYPE.
\ PICTURE IS X(2)
1

FASTENINGS.
5 NAILS
PIC 9V99
5 RIVETS LIKE NAILS.
\ PICTURE IS 9V9(2)
\ BLANK WHEN ZERO

BLANK WHEN ZERO.

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)
Puede utilizar un entero para aumentar o disminuir la longitud del campo. El
ejemplo siguiente muestra cmo aumentar la longitud de campo de
WEEKLY-AMOUNT:
1 WEEKLY-AMOUNT
PIC 9(3).
1 ANNUAL-AMOUNT LIKE WEEKLY-AMOUNT (+3).
\ PICTURE IS 9(6)
Asimismo, tenga en cuenta que:
Cualquier campo que tenga atributos de BLANK WHEN ZERO se considera un
campo editado.
Si se especifica un entero de cero, se genera un mensaje informativo.
Slo se puede aumentar o disminuir la parte del entero de la longitud de campo.
No se puede cambiar el nmero de posiciones decimales de un tem de datos.
Los atributos por omisin, SIGN IS TRAILING y USAGE IS DISPLAY, nunca se
imprimen como comentarios despus de una operacin LIKE.
Cuando utiliza la clusula LIKE, las reglas normales de calificacin de nombres de
datos se aplican en el nombre de datos principal; sin embargo, el nombre de datos
referenciado debe estar calificado exclusivamente si se defini anteriormente ms
de una vez. Por ejemplo:
1

COMBINATIONS.
5 PHENOTYPE
PIC XX.
5 GENOTYPE LIKE PHENOTYPE.
\ PICTURE IS X(2)
1 PHENOTYPE-TRAITS.
5 PHENOTYPE
PIC X(3).
5 PHENO-GROUP LIKE PHENOTYPE OF COMBINATIONS.
\ PICTURE IS X(2)

272

COBOL/400 Gua del usuario

Si el usuario no califica exclusivamente el nombre de datos principal, el compilador


le asigna una clusula PICTURE de X(2) y recibir un mensaje de error.
La utilizacin de la clusula LIKE a veces puede dar como resultado tems de
grupo que no sean vlidos. Por ejemplo, si define un tem de grupo COMP-4 y
luego utiliza la clusula LIKE para definir un tem COMP-3 que est subordinado a
l, se producir un error.
El ejemplo siguiente es vlido:
77
1

SWITCHES-IN-STOCK PIC S99.


PARTS-ON-ORDER SIGN IS LEADING SEPARATE.
5 SWITCHES-ON-ORDER LIKE SWITCHES-IN-STOCK.
\ PICTURE IS S9(2)
Nota: SWITCHES-ON-ORDER tiene el mismo atributo SIGN (SIGN IS TRAILING)
que SWITCHES-IN-STOCK.
En el caso de B LIKE A, donde A es un tem de grupo, B no puede estar subordinado a A. En el resto de casos, B se definir como un tem alfanumrico con una
longitud en bytes igual a la longitud de grupo A.
1

GARAGE-1.
5 STD-PARKING-1 PIC 9(3).
1 GARAGE-2.
5 STD-PARKING-2 PIC 9(3) COMP-3.
77 VACANCIES-1 LIKE GARAGE-1.
\ PICTURE IS X(3)
77 VACANCIES-2 LIKE GARAGE-2.
\ PICTURE IS X(2)
STD-PARKING-1 es un campo numrico con zona, de forma que VACANCIES-1
necesita 3 bytes de almacenamiento. STD-PARKING-2 es un campo numrico
empaquetado, de manera que VACANCIES-2 slo necesita 2 bytes de almacenamiento.
Podr utilizar la clusula LIKE con la clusula USAGE IS POINTER:
1

CUSTOMER-RECORD.
5 CUST-NAME
5 CUST-ADDR-POINTER
5 CUST-STATS-POINTER
\ USAGE IS POINTER
5 CUST-NUMBER

PIC X(16).
POINTER.
LIKE CUST-ADDR-POINTER.
PIC S9(8).

Nota: No se puede utilizar la clusula LIKE para cambiar la longitud de un


puntero.
Para informacin adicional acerca de la clusula LIKE, consulte la publicacin
COBOL/400 Reference.
Fin de Ampliacin de IBM

Captulo 11. Consideraciones de Programacin en COBOL/400

273

Modificacin de Referencias
La modificacin de referencias permite referenciar subseries de un tem de datos.
Simplemente debe especificar la posicin en el tem de datos en el que desee
iniciar la subserie, as como la longitud de la subserie. La longitud es opcional: si
la omite, se ampla automticamente hasta el final del tem de datos.
El usuario puede escribir la posicin inicial y el valor de la longitud como literales
enteros, tems de datos o expresiones aritmticas.
La posicin inicial debe ser, como mnimo, 1, y no puede ser mayor que la longitud
del tem de datos referenciado. La longitud debe ser, como mnimo, 1.
El resultado de aadir la posicin inicial a la especificacin de longitud, y despus
sustraerle 1, debe estar entre 1 y la longitud total del tem de datos referenciado,
ambos inclusive. Cuando el valor de longitud es mayor que la longitud total del
tem de datos, se produce un error.
Para informacin adicional acerca de la modificacin de referencias, vea la publicacin COBOL/400 Reference.
La opcin de generacin *RANGE produce cdigos para detectar situaciones de
modificacin de referencias fuera del rango, as como para sealar las violaciones
con un mensaje en tiempo de ejecucin.
Imagine que quiere recuperar la hora actual del sistema y visualizar su valor en un
formato ampliado. Puede recuperarla con la instruccin ACCEPT, que devuelve
las horas, minutos, segundos y centsimas de segundo en el formato:
HHMMSSss
Sin embargo, es posible que quiera visualizar la hora actual en el formato:
HH:MM:SS
Sin la modificacin de referencias, deber definir los tems de datos siguientes:
1

TIME-GROUP.
INTERESTING-FIELDS.
1 HOURS
1 MINUTES
1 SECONDS
5 UNINTERESTING-FIELDS.
1 HUNDREDTHS-OF-SECONDS
1 EXPANDED-TIME-GROUP.
5 INTERESTING-FIELDS.
1 HOURS
1 FILLER
1 MINUTES
1 FILLER
1 SECONDS
5

PIC XX.
PIC XX.
PIC XX.
PIC XX.

PIC
PIC
PIC
PIC
PIC

XX.
X
VALUE ":".
XX.
X
VALUE ":".
XX.

El cdigo siguiente recuperara el valor de hora, lo convertira al formato ampliado


y visualizara el valor nuevo:

274

COBOL/400 Gua del usuario

ACCEPT TIME-GROUP FROM TIME


MOVE CORRESPONDING
INTERESTING-FIELDS OF TIME-GROUP TO
INTERESTING-FIELDS OF EXPANDED-TIME-GROUP
DISPLAY "CURRENT TIME IS: " EXPANDED-TIME-GROUP
Con la modificacin de referencias, el usuario no necesita proporcionar nombres
para los subcampos que describen los tems de la hora. La nica definicin de
datos que debe tener es:
1

REFMOD-TIME-ITEM

PIC X(8).

El cdigo para recuperar y ampliar el valor de la hora aparece de la siguiente


manera:
ACCEPT REFMOD-TIME-ITEM FROM TIME
DISPLAY "CURRENT TIME IS: "
REFMOD-TIME-ITEM (1:2)
":"
REFMOD-TIME-ITEM (3:2)
":"
REFMOD-TIME-ITEM (5:2)
El ejemplo siguiente muestra una referencia que empieza en la posicin de caracteres 1, para una longitud 2, de forma que se recupera la parte del valor de la hora
que corresponde al nmero de horas:
REFMOD-TIME-ITEM (1:2)
El ejemplo siguiente muestra una referencia que empieza en la posicin de caracteres 3, para una longitud 2, de forma que se recupera la parte del valor de la hora
que corresponde al nmero de minutos:
REFMOD-TIME-ITEM (3:2)
El ejemplo siguiente muestra un referencia que comienza en la posicin de caracteres 5, para una longitud 2, de forma que se recupera la parte del valor de la hora
que corresponde al nmero de segundos:
REFMOD-TIME-ITEM (5:2)

Modificacin de Referencias con Tablas de Longitud Variable


Suponga que utiliza las tablas de longitud variable para contener nombres:
1

NAME-GROUP.
NAME-LENGTH
PIC
NAME-PORTION.
1 FILLER
PIC
OCCURS 1 TO 17 TIMES
DEPENDING ON NAME-LENGTH.
1 NEW-NAME-GROUP.
5 NEW-NAME-LENGTH
PIC
5 NEW-NAME-PORTION.
1 FILLER
PIC
OCCURS 1 TO 17 TIMES
DEPENDING ON NEW-NAME-LENGTH.
5
5

99.
X

99.
X

Captulo 11. Consideraciones de Programacin en COBOL/400

275

El objeto OCCURS DEPENDING ON de la tabla NAME-PORTION se coloca en 8


de forma que slo se referencien las primeras ocho apariciones de la tabla, aunque
se rellenen los 17 bytes de NAME-PORTION.

8WILLIAMS THOMAS J

Suponga que quiere cambiar el valor en el tem NAME-PORTION sin cambiar la


parte del tem que se define ms all de la longitud definida actualmente. Podra
intentar la codificacin:
MOVE NEW-NAME-GROUP TO NAME-GROUP
en la que el contenido de NEW-NAME-GROUP es:

5SMITH MICHAEL

Segn las reglas para la instruccin MOVE, se sustituir todo el contenido del
campo de recepcin NAME-GROUP. Este problema puede evitarse utilizando la
modificacin de referencias en la instruccin MOVE:
MOVE NEW-NAME-GROUP TO NAME-GROUP ( 1 :LENGTH OF NAME-GROUP )
Al especificar la modificacin 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.
El nuevo valor de NAME-GROUP ser:

5SMITH THOMAS J

Modificacin de Referencias Utilizando los Nombres de Datos


Hasta aqu, todos los ejemplos de modificacin de referencias han mostrado literales numricos simples como posicin inicial y valores de longitud de la modificacin de referencias. Estos valores tambin pueden ser tems de datos o
expresiones aritmticas.
Suponga que un campo contiene algunos caracteres alineados a la derecha, y
quiere moverlos a otro campo, pero alineados a la izquierda en lugar de estar a la
derecha. Podr hacerlo utilizando la modificacin de referencias y una instruccin
INSPECT.
El programa tendra los datos siguientes:
1
1

LEFTY
RIGHTY

PIC X(3).
PIC X(3)
JUSTIFIED RIGHT.
PIC 9(9)
USAGE BINARY.

A continuacin, el programa cuenta el nmero de espacios iniciales y, utilizando


expresiones aritmticas en una expresin de modificacin de referencias, mueve
los caracteres alineados a la derecha a otro campo (alineado a la izquierda):

276

COBOL/400 Gua del usuario

MOVE SPACES TO LEFTY


MOVE ZERO TO I
INSPECT RIGHTY
TALLYING I FOR LEADING SPACE
IF I IS LESS THAN 3 THEN
MOVE RIGHTY ( I + 1 : 3 - I ) TO LEFTY
END-IF
La instruccin MOVE transfiere caracteres de RIGHTY, comenzando en la posicin
calculada en I + 1, para una longitud que se calcula en 30 I, en el campo LEFTY.

Modificacin de Referencias con Subndices


Defina una tabla como sta:
1

ANY-TABLE.
TABLE-ELEMENT
OCCURS 3 TIMES
VALUE "ABCDEFGHIJ".

PIC X(1)

Puede cambiar el tercer y cuarto byte del primer tem de TABLE-ELEMENT al valor
?? con la instruccin MOVE siguiente:
MOVE "??" TO TABLE-ELEMENT ( 1 ) ( 3 : 2 )
Esta instruccin mover el valor ?? al tem de la tabla nmero 1, comenzando en
la posicin del carcter 3, para una longitud 2.
ANY-TABLE tendra este aspecto antes del cambio:

ABCDEFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

Y ste es el aspecto que tendra despus del cambio:

AB??EFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

Deseditar
La accin Deseditar sirve para mover un tem de datos editados de forma numrica a un tem de datos de recepcin numricos o editados de forma numrica. El
compilador realiza esta accin estableciendo en primer lugar el valor no editado del
tem editado de forma numrica. A continuacin mueve el valor no editado al
receptor.
La accin Deseditar puede producirse en operaciones del tipo MOVE e INITIALIZE.
Una clusula VALUE no deshace la edicin.
Observe que los valores numricos no editados pueden significar signos.
Captulo 11. Consideraciones de Programacin en COBOL/400

277

Imagine que utiliza un campo de caracteres para que contenga un valor numrico
que se visualice en el terminal y para que contenga un valor suministrado por el
operador del sistema. Suponga que este campo tiene la siguiente definicin:
Una posicin de caracteres para un signo (para que contenga un espacio si el
campo numrico es positivo o cero, o un signo menos si el campo numrico es
negativo).
Seis posiciones de dgitos, en las que los ceros iniciales se representen
mediante espacios;
Una coma decimal;
Dos posiciones de dgitos decimales.
Los tems de datos que utilice para definir este campo tendran el siguiente
aspecto:
1 NUM-EDIT

PIC Z(6).9(2)

USAGE IS DISPLAY.

Se podra inicializar este campo utilizando la instruccin:


MOVE ZEROS TO NUM-EDIT
y cuando se visualice en el terminal, contendra el valor .00.
Posteriormente, el operador del sistema podra utilizar este campo para la entrada
de datos. Si el operador inserta 123,45 en el campo, el usuario podr obtener
el valor numrico del campo movindolo a un tem de datos definido como:
1 NUMERIC-ITEM

PIC S9(6)V9(2)

USAGE IS PACKED-DECIMAL.

La instruccin:
MOVE NUM-EDIT TO NUMERIC-ITEM
provoca la accin Deshacer Edicin, con lo que el tem numrico recibe el valor
numrico del campo editado de forma numrica NUM-EDIT. Como resultado, el
tem numrico contiene el valor +123,45.

Ejemplos de Deseditar
La Tabla 5 y la Tabla 6 en la pgina 279 muestran ejemplos de la accin deseditar de COBOL/400.
Tabla 5. Mover tems Editados de Forma Numrica a Receptores Numricos

278

Imagen Origen

Valor Origen

Imagen Receptora

Valor Receptor

$+++,+++.++

$+123.45

S9(5)V9(5)
USAGE IS
DISPLAY

+123.45

$+++,+++.++

$1,234.56

S9(5)V9(5)
USAGE IS
BINARY

1234.56

*****.999+

**123.450

S9(5)V9(5)
USAGE IS
PACKED-DECIMAL

123.45

COBOL/400 Gua del usuario

Tabla 6. Mover tems Editados de Forma Numrica a Receptores Editados de Forma


Numrica
Imagen Origen

Valor Origen

Imagen Receptora

Valor Receptor

$+++,+++.++

$+123.45

$$$$,$$$.$$CR

$123.45

$+++,+++.++

$1,234.56

,.99

1,234.56

*****.999+

**123.450

ZZZBZZZBVZZZ

123450

ZZZ999CR

12345

$++++9999

$+12345

ZZZ999CR

12345CR

999999.99

012345.00

Manejo de Errores de Datos


El compilador proporciona comprobaciones de errores en tiempo de compilacin
para operaciones de mover que impliquen deshacer edicin.
El compilador no realiza esta comprobacin para los valores origen de cero e
ignora los caracteres de insercin simples (tales como / B 0 , .).

Prueba de Signo
El compilador valida los signos en tems fuente editados de forma numrica, segn
las reglas que aparecen a continuacin.
Definicin PICTURE

Contenidos admisibles

+ fijo

+o

fijo

CR

o CR

DB

o DB

Si no se obedecen estas reglas, se produce un error de signo y el programa se


detiene.

Prueba de Flotantes
Si el fuente tiene una serie de caracteres flotantes, esta prueba verifica la correccin de caracteres flotantes iniciales en el campo de datos.
Las reglas para la prueba de flotantes son:
Si la clusula fuente PICTURE contiene smbolos $ flotantes, el primer carcter
que no sea espacio en blanco de la parte pertinente del campo fuente (posiciones 2 a 7 en el ejemplo) debe ser un signo $, y su ubicacin debe ser
correcta segn las reglas de edicin de la clusula PICTURE. (Vea la publicacin COBOL/400 Reference para ms informacin acerca de estas reglas).
Por ejemplo:

Captulo 11. Consideraciones de Programacin en COBOL/400

279

Ubicacin de un Carcter Flotante Inicial


1 A PIC +$$B,$$$.
.
.
/\ Observe que "b" representa un espacio
/\ Serie PIC:
+$$B,$$$
/\ ndices Posicin:
12345678
MOVE 1 TO A.
/\ A = "+bbbbb$1"
MOVE 12 TO A.
/\ A = "+bbbb$12"
MOVE 123 TO A.
/\ A = "+bbb$123"
MOVE 1234 TO A.
/\ A = "+$1b,234"

\/
\/
\/
\/
\/
\/
\/

En este ejemplo, el signo $ debe colocarse en la posicin 2, 5, 6 o 7.


Si la clusula fuente PICTURE contiene smbolos + flotantes, el primer carcter
que no sea en blanco de la parte pertinente del campo fuente debe ser un
signo + o , y su ubicacin debe ser correcta segn las reglas de edicin de la
clusula PICTURE.
Si la clusula PICTURE contiene smbolos flotantes, la parte pertinente del
campo fuente deber empezar con:
Uno o ms espacios contiguos, el ltimo de los cuales debe estar correctamente situado segn las reglas de edicin de la clusula PICTURE.
Uno o ms espacios contiguos, con un signo justo a continuacin. La
ubicacin del signo debe ser correcta segn las reglas de edicin de la
clusula PICTURE.
A .
Si estas reglas no se obedecen, se produce un error de flotante y el programa se
detiene.

Consideraciones acerca del Rendimiento


Clusulas PICTURE para tems Numricos
Dado que las instrucciones de hardware utilizan signos, el usuario puede mejorar
el rendimiento incluyendo una S en una clusula de imagen siempre que sea
posible.
Tambin se puede mejorar el rendimiento especificando nmeros impares o posiciones de caracteres numricos en las clusulas de imagen para tems COMP-3
(decimales empaquetados). Internamente, el byte ms a la derecha de un tem
decimal empaquetado contiene un dgito y un signo, y cualquier otro byte contiene
dos dgitos. Si utiliza la configuracin ms eficiente, el compilador no necesita
suministrar el dgito que falta.

280

COBOL/400 Gua del usuario

tems Binarios de Ocho Bytes


Evite la utilizacin de tems binarios de 8 bytes. Puede especificar estos tems
segn su conveniencia, pero el compilador debe realizar conversiones para utilizarlos.

Segmentacin
La utilizacin de la segmentacin aumenta los tiempos de compilacin y ejecucin
del programa COBOL. La caracterstica de segmentacin slo se proporciona para
lograr la compatibilidad con otros sistemas. Al utilizar programas COBOL/400 no
tiene que preocuparse por la gestin de almacenamiento.

Llamadas a un Programa COBOL desde un Programa que no es


COBOL
La repeticin de llamadas desde un programa COBOL a otro que no sea COBOL
puede dar como resultado una disminucin sustancial en el rendimiento del compilador, puesto que al salir del programa principal COBOL (es decir, el programa que
ha iniciado la unidad de ejecucin COBOL) se desactiva el programa.
Se ha aadido una nueva funcin (MGTFUNC) a la rutina de tiempo de ejecucin
de COBOL (QRLMAIN) para evitar dicha desactivacin, provocando que el programa principal COBOL se trate como un subprograma. Dado que esta correccin
depende del tamao de MGT, se recomienda llamar a la rutina de tiempo de ejecucin, QLRMAIN, desde el programa principal COBOL con MGTFUNC = 9, tal y
como aparece en el ejemplo siguiente:
1

77

mgtstruc.
3 FILLER PIC X(277).
3 mgtfunc pic 9(2) comp-4 value 9.
TEST-VAR PIC X(1) value spaces.
if test-var = spaces then
display 'spaces'
move 'faked' to test-var
call 'QLRMAIN' using mgtstruc
else
display 'not spaces ' test-var.

Notas:
1. 1 Mgtstruc debe estar en un lmite de 16 bytes. Si se produce un error de
lmite, aada 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 podran producirse errores.
3. RCLRSC desactivar el programa principal (ahora un subprograma).

Captulo 11. Consideraciones de Programacin en COBOL/400

281

Depuracin
La depuracin del lenguaje fuente COBOL se proporciona para ayudar al programador en COBOL a depurar un programa que no funciona segn lo esperado. La
utilizacin de este servicio aumenta los tiempos de compilacin y ejecucin de un
programa COBOL.

Opcin *NORANGE
Esta opcin del parmetro GENOPT del mandato CRTCBLPGM suprime las comprobaciones en tiempo de ejecucin para rangos de modificacin de subndices y
referencias.
Esta opcin puede aumentar el rendimiento cuando:
Realice referencias frecuentes a las tablas, y los subndices siempre hagan
referencia a tems que estn en las tablas
Utilice frecuentemente la modificacin de referencias.
Nota: La opcin *RANGE genera cdigos para comprobar rangos de subndice.
Por ejemplo, asegura que el usuario no est intentando acceder al tem
nmero 21 de una matriz de 20 tems.
La opcin *NORANGE no genera cdigos para comprobar rangos de modificacin
de subndices o referencias.
Estas opciones no eliminan la comprobacin de subndice cero realizada por el
sistema operativo. Si se produce el subndice cero, el sistema operativo no permitir su utilizacin y emitir el mensaje MCH0603.

Opcin *DUPKEYCHK
Esta opcin de parmetro GENOPT del mandato CRTCBLPGM indica que se efectuar la comprobacin de clave duplicada para archivos INDEXED. La utilizacin
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 estn inicializando grandes volmenes de registros para suprimir
registros.
Consulte la Tabla 4 en la pgina 263 para ms informacin.

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
utilizacin de la clusula OCCURS para especificar una tabla de hasta 99 indicadores puede aumentar el rendimiento. Consulte la Figura 60 en la pgina 163
para ms informacin.

282

COBOL/400 Gua del usuario

Control de Compromiso
Generalmente, la utilizacin del control de compromiso aumenta el tiempo de ejecucin de un programa COBOL. Adems, el bloqueo de registros resultante de la
utilizacin del control de compromiso por un trabajo puede provocar retrasos para
otros usuarios que intenten acceder al mismo archivo.

Lectura sin Bloqueos de Registros


Para evitar registros de bloqueos innecesarios, puede incluir la frase NO LOCK en
la instruccin READ. Para ms informacin acerca de esta frase, consulte la
seccin de la instruccin READ en la publicacin COBOL/400 Reference.

Inicializacin de Variables
Se puede reducir el tiempo de ejecucin de un programa eligiendo la posibilidad de
no inicializar variables de programa que no tengan clusulas de valor asociadas.
Se puede especificar esta no inicializacin mediante \NOSTDINZ para el parmetro
GENOPT del mandato CRTCBLPGM, o especificando NOSTDINZ en la instruccin
PROCESS. A continuacin, el compilador inicializa nicamente aquellas variables
que tienen clusulas de valor declaradas. Una ventaja adicional de esta opcin
consiste en que el usuario tambin puede compilar programas ms grandes con un
nmero mayor de variables.
Si se especifica \NOSTDINZ, deber asegurarse de que todos los tems de datos
contengan datos vlidos antes de intentar manipular los tems. Si un tem no contiene datos vlidos, pueden producirse errores de datos decimales.

Bloqueo de Registros
Se puede utilizar el bloqueo de registros para mejorar el rendimiento del tiempo de
ejecucin. Las ventajas del bloqueo quedan patentes cuando se leen varios registros de manera secuencial, como una lectura aleatoria seguida de lecturas secuenciales.
Para ms informacin acerca de los bloqueos, consulte el apartado Desbloqueo
de Registros de Entrada y Bloqueo de Registros de Salida en la pgina 107.

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 informacin conocida acerca
del propio programa, de la manera siguiente:
Tiempo: Si el tiempo de ejecucin real sobrepasa sustancialmente el tiempo
de ejecucin 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.

Captulo 11. Consideraciones de Programacin en COBOL/400

283

Rastreo de un Bucle en un Programa


Frecuentemente, un bucle abarca muchas instrucciones en un programa. En este
caso, puede utilizar las caractersticas de depuracin COBOL que aparecen en el
Captulo 5, Depuracin del Programa en la pgina 57.

Errores que Pueden Causar un Bucle


Una instruccin PERFORM con una clusula UNTIL puede provocar un bucle si no
se puede cumplir la condicin especificada en la clusula UNTIL. Por ejemplo:
PERFORM ... UNTIL COUNTR LESS THAN ZERO
donde COUNTR es un tem numrico sin signo.
Una instruccin GO TO que hace referencia a un nombre de procedimiento anterior
puede provocar un bucle si no hay ninguna instruccin condicional para impedir
que la instruccin GO TO se procese de nuevo. Por ejemplo:
PARA-1.
MOVE ...
MOVE ...
MOVE ...
PARA-2.
MOVE ...
GO TO PARA-1.
se produce una variacin posible de este caso si existe una instruccin condicional,
pero esta condicin no puede cumplirse o la instruccin no se bifurca (mediante
una sentencia GO TO) a un prrafo fuera del rango del bucle.

284

COBOL/400 Gua del usuario

Captulo 12. Comunicaciones entre Programas


En ocasiones, una aplicacin es suficiente para que se codifique como un programa nico y autosuficiente. Sin embargo, en la mayora de los casos, la solucin que ofrece una aplicacin consta de varios programas compilados por
separado y utilizados conjuntamente.
El sistema AS/400 proporciona la comunicacin entre programas COBOL y entre
programas COBOL y otros que no sean COBOL.
Una unidad de ejecucin COBOL es un conjunto de uno o ms programas que
funcionan como una unidad en el tiempo de ejecucin con el fin de proporcionar
una solucin a un problema. Una unidad de ejecucin COBOL se inicia con el
primer programa COBOL en la pila de programas, e incluye todos los programas
(de cualquier tipo) que estn por debajo de l. Una pila de programas es una
lista de programas enlazados como resultado de programas que llaman a otros
programas, o de manera implcita desde cualquier otra accin dentro del mismo
trabajo.
Cuando una unidad de ejecucin consta de varios programas compilados por separado que se llaman mutuamente, dichos programas deben ser capaces de comunicarse entre s. Necesitan transferir el control y normalmente necesitan tener
acceso a datos comunes. Este captulo describe los mtodos seguidos por esta
comunicacin entre programas compilados por separado.

Transferencia de Control a Otro Programa


En la Divisin de Procedimientos, un programa puede llamar a otro programa (lo
que, en trminos de COBOL, se suele denominar subprograma), y este programa
llamado puede, a su vez, llamar a otro programa. El programa que llama a otro
programa se denomina programa de llamada, y el programa al que sta llama se
denomina programa llamado.
El programa COBOL llamado empieza a ejecutarse al principio de la Divisin de
Procedimiento.
Cuando el proceso del programa llamado ha finalizado, el programa puede transferir de nuevo el control al programa de llamada o finalizar la unidad de ejecucin.
Un programa llamado no debe ejecutar, directa o indirectamente, su llamador (por
ejemplo, el programa X llamando al programa Y; el programa Y llamando al programa Z, y el programa Z llamando entonces al programa X). Recibe el nombre
de llamada recurrente. COBOL/400 permite la recurrencia tanto en programas
principales como en subprogramas. Sin embargo, si desea que sus programas se
adecen a estndares SAA, no utilice llamadas recurrentes.

Copyright IBM Corp. 1994

285

Programas Principales y Subprogramas


El primer programa COBOL que se va a a ejecutar inicia la unidad de ejecucin
COBOL, y no es otro que el programa principal. No existen instrucciones fuente
u opciones especficas que identifiquen un programa COBOL como un programa
principal o un subprograma. Un subprograma es un programa de la unidad de
ejecucin que est por debajo del programa principal en la pila de programas.
Para ms informacin acerca de las pilas de programas y de otros trminos
relativos a la comunicacin entre programas, consulte la publicacin CL Gua del
Programador.

Devolucin de Control desde un Programa Llamado


Es importante conocer si un programa COBOL es un programa principal o un subprograma, con el fin de determinar el modo en que el control se devuelve desde un
programa llamado cuando se produce un error o finaliza un programa.
Puede emitir una instruccin STOP RUN, EXIT PROGRAM o GOBACK para
devolver el control de un programa llamado.
Si la ejecucin finaliza en el programa principal, se utiliza STOP RUN o GOBACK.
Estas instrucciones finalizan la unidad de ejecucin, y se devuelve el control al llamador del programa principal.
Si la ejecucin finaliza en un subprograma, ste podr finalizar con una instruccin
EXIT PROGRAM, GOBACK o STOP RUN. Si el subprograma finaliza con una
instruccin EXIT PROGRAM o GOBACK, el control vuelve a su inmediato llamador
sin finalizar la unidad de ejecucin. Se genera una instruccin EXIT PROGRAM
implcita si no existe ninguna instruccin ejecutable posterior en un programa
llamado. Si finaliza con una instruccin STOP RUN, el efecto es el mismo que se
produce en el programa principal: todos los programas COBOL de la unidad de
ejecucin finalizan, y el control vuelve al llamador del programa principal.
Un subprograma se queda en un estado utilizado por ltima vez cuando finaliza
con EXIT PROGRAM o GOBACK. La prxima vez que se llame en la unidad de
ejecucin, sus valores internos sern los que se haban dejado, con la salvedad de
que los valores de retorno para las instrucciones PERFORM se reinicializarn a
sus valores iniciales. Por contra, un programa principal se inicializar cada vez
que se llame.
Los ejemplos siguientes ilustran la utilizacin de las instrucciones EXIT PROGRAM
y STOP RUN en partes distintas de la unidad de ejecucin.
El ejemplo de la Figura 85 en la pgina 287 muestra una nica unidad de ejecucin.
El ejemplo de la Figura 86 en la pgina 288 muestra mltiples unidades de
ejecucin que se ejecutan de manera consecutiva.
El ejemplo de la Figura 87 en la pgina 289 muestra una unidad de ejecucin
con un programa compartido que es a la vez un subprograma y un programa
principal.
El ejemplo de la Figura 88 en la pgina 290 muestra varias unidades de ejecucin que se ejecutan simultneamente.

286

COBOL/400 Gua del usuario

Nota: Puede sustituir una instruccin GOBACK por una instruccin EXIT
PROGRAM que aparezca en un subprograma, o una instruccin STOP
RUN que aparezca en un programa principal.
LLAMADA
UNIDAD EJECUCIN A
NIVEL

PGMA

Programa

Principal COBOL

PGMB

PGMC

n + 1

COBOL

No COBOL


PGMD

PGME

PGMF

n + 2

COBOL

COBOL

No COBOL

PROGRAMA QUE EJECUTA LA INSTRUCCIN

INSTRUCCIN
PGMA

PGMB

PGMD
PGME

EXIT PROGRAM

.1/

.2/

.2/

.2/

STOP RUN

.3/

.3/

.3/

.3/

Figura 85. Ejemplo de una nica Unidad de Ejecucin

.1/

No se procesa ninguna operacin porque la instruccin se procesa en un


programa principal. El proceso contina con la instruccin siguiente en
PGMA.

.2/

El control se devuelve al llamador del programa que procesa la instruccin


EXIT PROGRAM.

.3/

La unidad de ejecucin A finaliza. Para todos los programas en la unidad de


ejecucin, se cierran los archivos abiertos.Se libera el almacenamiento para
todos los programas en la unidad de ejecucin. El control se devuelve al
programa que est en el nivel de llamada n-1. Si n=1, se aplican las consideraciones siguientes:
La unidad de ejecucin A opera como un paso de trabajo. Consulte la
publicacin CL Gua del Programador para ms informacin.
Para trabajos por lotes, la instruccin STOP RUN finaliza el trabajo.
Para trabajos interactivos, el control se devuelve al sistema y ste el
paso del trabajo.
Captulo 12. Comunicaciones entre Programas

287

LLAMADA
NIVEL

PGMA

No COBOL

UNIDAD EJECUCIN B

UNIDAD EJECUCIN C

PGMB

PGMC

Programa

Programa

Pincipal COBOL
Principal COBOL




PGMD

PGME

PGMF

No COBOL

COBOL

COBOL

n + 1

n + 2

PROGRAMA QUE EJECUTA LA INSTRUCCIN

PGME
PGME

PGMB

PGMC
(UNIDAD DE(UNIDAD PGMF
INSTRUCCIN

EJEC. B) EJEC.C)

EXIT PROGRAM

.1/

.1/

.2/

.2/

.2/

STOP RUN

.3/

.4/

.3/

.4/

.4/

Figura 86. Ejemplo de Varias Unidades de Ejecucin que se Ejecutan de Manera Consecutiva

288

.1/

No se procesa ninguna operacin porque la instruccin se procesa en un


programa principal. El proceso contina con la instruccin siguiente en el
programa principal.

.2/

El control se devuelve al llamador del programa que procesa la instruccin


EXIT PROGRAM.

.3/

Se finaliza la unidad de ejecucin B. Todos los archivos abiertos en la


unidad de ejecucin B se cierran. Se libera el almacenamiento para todos
los programas en la unidad de ejecucin B. El control se devuelve al llamador del programa principal para la unidad de ejecucin (PGMA).

.4/

Se finaliza la unidad de ejecucin C. Todos los archivos abiertos en la


unidad de ejecucin C se cierran. Se libera el almacenamiento para todos
los programas en la unidad de ejecucin C. El control se devuelve al llamador del programa principal para la unidad de ejecucin (PGMA).

COBOL/400 Gua del usuario

LLAMADA
NIVEL

PGMA

No COBOL

UNIDAD EJECUCIN B

PGMB

PGMC

Programa

Principal COBOL

No COBOL

UNIDAD EJECUCIN E

UNIDAD EJECUCIN F



PGMD

PGME

PGMF


Programa

No COBOL

COBOL

Principal COBOL

n + 1

n + 2

PROGRAMA QUE EJECUTA LA INSTRUCCIN

PGME

PGME

PGMB
(UNIDAD DE(UNIDAD DE
PGMF

INSTRUCCIN

EJEC. B) EJEC. E)

EXIT PROGRAM

.1/

.2/

.1/

.1/

STOP RUN

.3/

.3/

.4/

.5/

Figura 87. Ejemplo de una Unidad de Ejecucin con un Programa Compartido que es tanto
un subprograma como un programa principal

.1/

No se procesa ninguna operacin porque la instruccin se procesa en un


programa principal. El proceso contina con la instruccin siguiente en el
programa principal.

.2/

El control se devuelve al llamador del programa que procesa la instruccin


EXIT PROGRAM.

.3/

Se finaliza la unidad de ejecucin B. Todos los archivos abiertos en la


unidad de ejecucin B se cierran. Se libera el almacenamiento para todos
los programas en la unidad de ejecucin B. El control se devuelve al llamador del programa principal para la unidad de ejecucin (PGMA).

Captulo 12. Comunicaciones entre Programas

289

.4/

Se finaliza la unidad de ejecucin E. Todos los archivos abiertos en la


unidad de ejecucin E se cierran. Se libera el almacenamiento para PGME.
El control se devuelve al llamador del programa principal para la unidad de
ejecucin (PGMC).

.5/

Se finaliza la unidad de ejecucin F. Todos los archivos abiertos en la


unidad de ejecucin F se cierran. Se libera el almacenamiento para PGMF.
El control se devuelve al llamador del programa principal para la unidad de
ejecucin (PGMC).
NIVEL DE
LLAMADA

PGMA

No en COBOL
UNIDAD DE EJECUCIN B

PGMB

Programa

Principal COBOL

6
6

PGMC

PGMD

COBOL
no en COBOL
UNIDAD DE EJECUCIN E


PGM QLRCHGCM

PGME

Programa


Principal

API
2
COBOL

PGMF


COBOL

n+1

n+2

n+3

n+4

PROGRAMA QUE EJECUTA LA INSTRUCCIN

PGMC

PGME

PGMB
(UNIDAD DE(UNIDAD DE
PGMF

INSTRUCCIN

EJEC. B) EJEC. E)

EXIT PROGRAM

.1/

.2/

.1/

.2/

STOP RUN

.3/

.3/

.4/

.4/

Figura 88. Ejemplo de Varias Unidades de Ejecucin que se Ejecutan Simultneamente

.1/

290

No se procesa ninguna operacin porque la instruccin se procesa en un


programa principal. El proceso contina con la instruccin siguiente en programa principal.

COBOL/400 Gua del usuario

.2/

El control se devuelve al llamador del programa que procesa la instruccin


EXIT PROGRAM.

.3/

La unidad de ejecucin B slo se puede finalizar una vez que la unidad de


ejecucin E realiza una instruccin STOP RUN. Cuando la unidad de ejecucin B finaliza, todos los archivos abiertos en la unidad de ejecucin B se
cierran. Se libera el almacenamiento para todos los programas de la unidad
de ejecucin B, y el control se devuelve al llamador del programa principal
(PGMA).

.4/

Se finaliza la unidad de ejecucin E. Todos los archivos abiertos en la


unidad de ejecucin E se cierran. Se libera el almacenamiento para todos
los programas en la unidad de ejecucin E. El control se devuelve a PGMD
en la unidad de ejecucin B.

Las unidades de ejecucin concurrentes se consiguen utilizando la API


QLRCHGCM. Consulte la publicacin System Programmers Interface Reference
para ms informacin acerca de esta API.

Inicializacin de Almacenamiento
La primera vez que se llama a un programa COBOL en una unidad de ejecucin,
se inicializa su almacenamiento. El almacenamiento se inicializa de nuevo con las
condiciones siguientes:
Se termina la unidad de ejecucin, luego se vuelve a iniciar.
El programa se cancela (utilizando la instruccin CANCEL para COBOL, la
operacin FREE para el lenguaje de programacin RPG/400* o el mandato
Reclamar Recurso (RCLRSC), y a continuacin se llama de nuevo.
Si se nombra un programa que no sea COBOL en una instruccin CANCEL, su
nombre debe respetar las reglas para la formacin de un nombre de programa
COBOL.

Llamada a Otro Programa


Con cierta frecuencia, desear que sus programas COBOL se comuniquen con
otros programas COBOL o que no sean COBOL.

Paso de Datos Utilizando BY REFERENCE o BY CONTENT


BY REFERENCE significa que el subprograma est consultando y procesando los
tems de datos en el almacenamiento del programa de llamada, y no est trabajando sobre una copia de los datos.
BY CONTENT significa que el programa de llamada est pasando nicamente el
contenido del literal o identificador. Con una instruccin CALL . . . BY CONTENT,
el programa llamado no puede cambiar el valor del literal o identificador en el programa de llamada, incluso si ste modifica la variable en la que ha recibido el
literal o identificador.
El hecho de pasar tems de datos con BY REFERENCE o con BY CONTENT
depende de lo que el usuario desee que el programa haga con los datos:

Captulo 12. Comunicaciones entre Programas

291

Si desea que la definicin del argumento de la instruccin CALL del programa


de llamada y la definicin del parmetro en el programa llamado compartan la
misma memoria, especifique:
CALL . . . BY REFERENCE identificador.
Todo cambio realizado por el subprograma en el parmetro afecta al argumento del programa de llamada.
Un identificador en la frase USING de la instruccin CALL . . . BY
REFERENCE puede ser un nombre de archivo, adems de un nombre de
datos.
El compilador acepta los nombres de archivos CALL como operandos CALL
como si fueran una extensin.
Si desea pasar la direccin de un rea de registro a un programa llamado,
especifique:
CALL . . . BY REFERENCE ADDRESS OF nombre-registro.
El subprograma recibe la instruccin ADDRESS OF del registro especial para
el nombre de registro especificado.
El usuario deber definir el nombre de registro como un tem de nivel-01 o
nivel-77 en la Seccin de Enlace del programa de llamada y del programa
llamado. Se proporciona una instruccin ADDRESS OF del registro especial
para cada registro de la Seccin de Enlace.
Si no desea que la definicin del argumento de la instruccin CALL del programa de llamada y la definicin del parmetro en el programa llamado compartan la misma memoria, especifique:
CALL . . . BY CONTENT identificador.
Si desea pasar un valor de literal a un programa llamado, especifique:
CALL . . . BY CONTENT literal.
El programa llamado no puede cambiar el valor del literal. El literal no puede
ser numrico.
Si desea pasar la longitud de un tem de datos, especifique:
CALL . . . BY CONTENT LENGTH OF identificador.
El programa de llamada pasa la longitud de identificador desde su longitud de
(LENGTH OF) registro especial. Cuando se pasan los literales por contenido
(BY CONTENT), el programa llamado no puede cambiar sus valores.
Si desea pasar tanto un tem de datos como su longitud a un subprograma,
especifique una combinacin de BY REFERENCE y BY CONTENT. Por
ejemplo:
CALL 'ERRPROC' USING BY REFERENCE A
BY CONTENT LENGTH OF A.
Los tems de datos de un programa de llamada pueden describirse en la Seccin
de Enlace de todos los programas a los que llama directa o indirectamente. En
este caso, el almacenamiento para estos tems se asigna al programa de llamada
superior. Es decir, el programa A llama al programa B, el cual llama al programa
C. Los tems de datos del programa A pueden describirse en la Seccin de Enlace
de los programas B y C, de manera que un conjunto de datos pueda estar disponible para los tres programas.

292

COBOL/400 Gua del usuario

Descripcin de Argumentos en el Programa de Llamada


En el programa de llamada, los argumentos se describen en la Divisin de Datos
del mismo modo que el resto de los tems de datos de la Divisin de Datos. A
menos que se encuentren en la Seccin de Enlace, el almacenamiento de dichos
tems se asigna al programa de llamada. Si se consultan datos en un archivo, ste
debe estar abierto. Codifique la clusula USING de la instruccin CALL para pasar
los argumentos.

Descripcin de Parmetros en el Programa Llamado


En el programa llamado, los parmetros se describen en la Seccin de Enlace.
Codifique la clusula USING despus de la cabecera PROCEDURE-DIVISION
para recibir los parmetros.

En la Seccin de Enlace
El usuario deber conocer lo que est pasando desde el programa de llamada y
configurar la Seccin de Enlace en el programa llamado para aceptarlo. Al programa llamado no le importa la clusula de la instruccin 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 Seccin de Enlace.
El nmero de nombres-datos de la lista de identificador de un programa llamado no
debe ser mayor que el nmero de nombres-datos de la lista de identificador del
programa de llamada. Existe una correspondencia de posicin de uno a uno; es
decir, el primer identificador del programa de llamada se pasa al primer identificador del programa llamado, y as sucesivamente. El compilador no hace ningn
intento de hacer coincidir argumentos y parmetros.

Agrupacin de Datos a Pasar


Piense en agrupar todos los tems de datos que desee pasar entre programas y en
ponerlos bajo un tem de nivel-01. Si lo hace, podr pasar un registro nico de
nivel-01 entre programas. Para ver un ejemplo de este mtodo, observe la
Figura 89 en la pgina 294.
Para que la posibilidad de registros no coincidentes se vea an reducida, transfiera
el registro de nivel-01 a un miembro de copia y cpielo en ambos programas, es
decir, cpielo en la Seccin de Almacenamiento de Trabajo del programa de
llamada y en la Seccin de Enlace del programa llamado.

Captulo 12. Comunicaciones entre Programas

293

Descripcin Programa Llamada

Descripcin Programa Llamado

SECCIN ALMACENAMIENTO TRABAJO.


SECCIN ENLACE.

1 PARAMLIST.

1 USINGLIST.

5 PARTCODE PIC A.
5 1 PARTID PIC X(5).
5 PARTNO
PIC X(4).

1 SALES
PIC 9(5).
5 USALES
PIC 9(5).

PROCEDURE DIVISION.

PROCEDURE DIVISION
6
.

USING USINGLIST.
.

CALL CALLEDPROG
6

USING PARAMLIST.
En el programa llamado, el cdigo

de componentes y de nmero de
componentes se combinan en un tem
En el programa de llamada, el
de datos (PARTID). En el programa
cdigo de componente (PARTCODE)
llamado, la nica consulta vlida
y el nmero de componente (PARTNO)
es la consulta a un tem de datos
aparecen por separado.
(PART-ID).
Figura 89. tem de Datos Comunes en el Enlace de Subprograma

Llamada por Identificador


Se establece un puntero del sistema que asocia un identificador con un objeto la
primera vez que utilice el identificador en una instruccin CALL.
Importante para la compatibilidad!
Si realiza una llamada por identificador a un programa que posteriormente
suprimir o redenominar, debe utilizar la instruccin CANCEL para anular el
puntero del sistema asociado con el identificador. Ello asegura que cuando
utilice otra vez el identificador para llamar al programa, el puntero del sistema
asociado se activar de nuevo.

El ejemplo siguiente muestra cmo aplicar la instruccin CANCEL para un


identificador:
MOVE "ABCD" TO IDENT-1.
CALL IDENT-1.
CANCEL IDENT-1.
Si aplica la instruccin CANCEL directamente al literal "ABCD", no anula el puntero
del sistema asociado con IDENT-1. En su lugar, puede continuar llamando al programa ABCD con slo utilizar IDENT-1 en la instruccin CALL.
El valor del puntero del sistema tambin cambia si el usuario modifica el valor del
identificador y realiza una llamada utilizando este nuevo valor.

294

COBOL/400 Gua del usuario

Utilizacin de Punteros en un Programa COBOL/400


Podr utilizar un puntero (un tem de datos en el que pueden almacenarse los
valores de la direccin) en un programa COBOL siempre que desee pasar y recibir
direcciones de un tem de datos asignado de manera variable, as como realizar
direccionamientos de base limitada.
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 contiene el desplazamiento en el objeto espacio del sistema AS/400.
Para definir un puntero COBOL (llamado tem de datos puntero), codifique una
clusula 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.
Un tem de datos de puntero slo puede utilizarse:
En una instruccin SET (slo Formato 5)
En una relacin de condicin
En la frase USING de la instruccin CALL o en la cabecera de la Divisin de
Procedimiento.
En el operando de la longitud (LENGTH OF) y direccin (ADDRESS OF) de
registros especiales.
Si los punteros se utilizan en una condicin relacional, los nicos operadores
vlidos son igual a o no igual a.
Dado que los tems de datos punteros no son simples nmeros binarios del
sistema AS/400, el manejo de punteros como enteros no funciona.
Los tems de datos punteros quedan definidos explcitamente con la clusula
USAGE IS POINTER, y son implcitos al utilizar una instruccin de direccin
(ADDRESS OF) de registro especial o la direccin (ADDRESS OF) de un tem.
Si un tem de grupos se describe mediante la clusula USAGE IS POINTER, los
tems bsicos dentro del tem de grupos son tems de punteros. El grupo en s no
es un tem de datos puntero, y no puede utilizarse en la sintaxis all donde se
permita un tem de datos puntero. La clusula USAGE de un tem elemental no
puede contradecir la clusula USAGE de un grupo al que pertenezca el tem.
Los tems de datos puntero pueden formar parte de un grupo referenciado en una
instruccin MOVE o en una instruccin de entrada/salida; sin embargo, si un tem
de datos puntero forma parte de un grupo, no se produce la conversin de los
valores del puntero a otra forma de representacin interna cuando la instruccin se
ejecuta.

Captulo 12. Comunicaciones entre Programas

295

Definicin y Alineacin de Punteros


Los tems de datos puntero pueden definirse a cualquier nivel (excepto el 88) en el
archivo, en el almacenamiento de trabajo o en las secciones de enlace de un programa.
Cuando un puntero aparece referenciado en el sistema AS/400, debe estar en un
lmite de almacenamiento de 16 bits. La alineacin de puntero se refiere al
proceso del compilador de COBOL/400 de colocar los tems de puntero de un tem
de grupos a desplazamientos que sean mltiplos de 16 bytes desde el principio del
registro. Si un tem de puntero no se encuentra en un lmite de 16 bytes, se enva
una excepcin de alineacin de puntero (MCH0602) al programa COBOL/400. En
general, las excepciones de alineacin de puntero se producen en la Seccin de
Enlace, donde corresponde al usuario decidir la alineacin de dichos tems.
En las secciones de Archivo y Almacenamiento de Trabajo, el compilador se
asegura de que esta excepcin no se produzca, aadiendo tems FILLER implcitos. Cada vez que el compilador aade un tem FILLER implcito, emite un
mensaje de aviso. En la Seccin de Enlace, el compilador no aade ningn tem
FILLER implcito; sin embargo, emite mensajes de aviso que indican la cantidad de
bytes FILLER que se habran aadido si el tem de grupos hubiera aparecido en
las secciones de Archivo o de Almacenamiento de Trabajo.
Podr definir un tem de datos como un puntero especificando la clusula USAGE
IS POINTER, tal como se muestra en el ejemplo siguiente:
WORKING-STORAGE SECTION.
APTR USAGE POINTER.
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.
77
1

Figura 90. Definicin de un tem de Datos Puntero

En el ejemplo anterior, AVAR es un tem de datos de nivel 01, de modo que la


direccin de AVAR (ADDRESS OF AVAR) es la direccin (ADDRESS OF) del
registro especial. Dado que un registro especial es un rea de almacenamiento
real, la instruccin SET traslada el contenido de ADDRESS OF AVAR a un tem de
datos de puntero APTR.
En el ejemplo que hemos visto, si la instruccin SET utilizara ADDRESS OF
CVAR, no existira ningn registro especial. En su lugar, al tem de datos de
puntero APTR se le asigna la direccin calculada de CVAR.

296

COBOL/400 Gua del usuario

En las Secciones de Archivo y Almacenamiento de Trabajo


En las secciones de Archivo y Almacenamiento de Trabajo, todos los tems de
nivel 01 (y algunos tems de nivel 66 y 77) se colocan en lmites de 16 bytes.
Dentro de una estructura de grupos, los tems de datos de puntero deben estar
tambin en un lmite de 16 bytes. Para asegurarse de ello, el compilador de
COBOL/400 aade 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 sita en un lmite de 16 bytes. Con el fin de asegurarse de que todas las
apariciones posteriores se siten en un lmite de 16 bytes, se aade un tem
FILLER al final de la tabla, siempre que sea necesario.
Un ejemplo de alineacin de tems de datos de puntero sera el siguiente:
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. Alineacin de tems de Datos de Puntero

En el ejemplo anterior, APTR es un tem de datos de puntero. Por lo tanto, el tem


de nivel 77 se sita en un lmite de 16 bytes. El tem de grupo AB es un tem de
nivel 01 y se sita automticamente en un lmite de 16 bytes. Dentro del tem de
grupo AB, BPTR no est en un lmite de 16 bytes. Con el fin de alinearlo convenientemente, el compilador inserta un tem FILLER de 6 bytes despus de
ALPHA-NUM. Finalmente, CPTR requiere un FILLER de 2 bytes para alinear su
primera aparicin. Dado que ALPHA-NUM-THREE tiene slo una longitud de 5
bytes, debe aadirse otro tem FILLER de 11 bytes al final ARRAY-1 para alinear
todas las apariciones posteriores de CPTR.
Cuando se define un puntero en la Seccin de Archivos, y existe un archivo que no
tiene agrupaciones en activo, cada tem de nivel 01 estar en un lmite de 16
bytes. Si un archivo tiene bloques en activo, nicamente el primer registro de un
bloque tiene la seguridad de estar en un lmite de 16 bytes. De esta manera, no
deberan definirse tems de datos de puntero para archivos con bloques en activo.
Para ms informacin acerca de los bloques, consulte el apartado Desbloqueo de
Registros de Entrada y Bloqueo de Registros de Salida en la pgina 107.

Los Punteros y la Clusula REDEFINES


Un tem de datos puntero puede ser el sujeto o el objeto de una clusula REDEFINES.
Cuando un puntero es el sujeto de una clusula REDEFINES, el tem de datos
objeto debe estar en un lmite de 16 bytes.

Captulo 12. Comunicaciones entre Programas

297

Por ejemplo:
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 dara 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 - Mtodo Incorrecto

En el ejemplo anterior, APTR se alinea en un lmite de 16 bytes. Es decir, el compilador de COBOL/400 no necesitaba aadir tems FILLER para alinear APTR. El
tem de grupos HI no est en el lmite de 16 bytes y, por lo tanto, tampoco lo est
el tem de datos puntero BPTR. Dado que el compilador de COBOL/400 no puede
aadir tems FILLER para colocar el BPTR en un lmite de 16 bytes, se producir
un error grave. En el ejemplo que se muestra a continuacin, similar al anterior, el
compilador de COBOL/400 es capaz de colocar el tem de datos puntero en un
lmite de 16 bytes:
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 - Mtodo Correcto

En el ejemplo anterior, el tem de grupos KL no est en un lmite de 16 bytes; no


obstante, el compilador aade un tem FILLER de 11 bytes antes del tem de datos
puntero BPTR para asegurarse de que se sita en un lmite de 16 bytes.

Lectura y Grabacin de Punteros


Los tems de datos puntero pueden definirse en la Seccin de Archivos, y su utilizacin y configuracin puede ser la misma que la de cualquier tem de datos
puntero del Almacenamiento de Trabajo. Existen, no obstante, algunas
restricciones:

298

COBOL/400 Gua del usuario

Si un archivo tiene bloques en activo, nicamente el primer registro de un


bloque tiene la seguridad de estar en un lmite de 16 bytes. Por consiguiente,
no deberan definirse tems de datos puntero para archivos con bloques en
activo.
Un registro que contenga punteros puede grabarse en un archivo; sin
embargo, en una lectura ulterior de dicho registro, los tems de datos puntero
dan igual a NULL.

Inicializacin de Punteros Utilizando la Constante Figurativa NULL


La constante figurativa NULL representa un valor que se utiliza para indicar que los
tems de datos definidos con USAGE IS POINTER, ADDRESS OF o la direccin
(ADDRESS OF) del registro especial no contienen una direccin vlida. Por
ejemplo:
WORKING-STORAGE SECTION.
77 APTR USAGE POINTER VALUE NULL.
PROCEDURE DIVISION.
IF APTR = NULL THEN
DISPLAY 'APTR IS NULL'
END-IF.
Figura 95. Utilizacin de NULL para Inicializar un Puntero

En el ejemplo anterior, el puntero APTR se establece en NULL en la seccin de


Almacenamiento de Trabajo. La comparacin en la divisin de procedimiento ser
verdadera y la instruccin en pantalla se ejecutar.
En el sistema AS/400, el valor inicial de un tem de datos de puntero, con o sin
una clusula de valor (VALUE) de NULL, da igual a NULL.

Longitud (LENGTH OF) de Registro Especial


La longitud (LENGTH OF) de registro especial contiene el nmero de bytes utilizado por un identificador. ste devuelve un valor de 16 para un tem de datos
puntero.
Podr utilizar la instruccin LENGTH OF en la Divisin de Procedimiento all donde
se utilice un tem de datos numricos cuya definicin sea la misma que la definicin de la longitud (LENGHT OF) del registro especial; sin embargo, LENGHT OF
no puede utilizarse como subndice ni recibir tems de datos. LENGTH OF tiene la
siguiente definicin implcita:
USAGE IS BINARY, PICTURE 9(9)
El siguiente ejemplo muestra de qu manera podr utilizar LENGHT OF con
punteros:

Captulo 12. Comunicaciones entre Programas

299

WORKING-STORAGE SECTION.
77 APTR USAGE POINTER.
1 AB.
5 BPTR USAGE POINTER.
5 BVAR PIC S9(3) PACKED-DECIMAL.
5 CVAR PIC S9(3) PACKED-DECIMAL.
PROCEDURE DIVISION.
MOVE LENGTH OF AB TO BVAR.
MOVE LENGTH OF BPTR TO CVAR.
Figura 96. Utilizacin de LENGTH OF con Punteros

En el ejemplo anterior, la longitud del tem de grupo AB se traslada a la variable


BVAR. BVAR tiene un valor de 20 porque BPTR tiene 16 bytes de longitud, y
ambas variables, BVAR y CVAR, tienen dos bytes de longitud. CVAR recibe un
valor de 16.
Tambin podr utilizar el registro especial LENGHT OF para configurar estructuras
de datos dentro de espacios de usuario, as como para incrementar direcciones
recibidas desde otro programa. Para ver un ejemplo de un programa que utiliza el
registro especial LENGTH OF para definir estructuras de datos dentro de espacios
de usuario, consulte la Figura 99 en la pgina 305.

Configuracin de la Direccin de tems de Enlace


Por norma general, cuando un programa COBOL llama a otro programa, los datos
pasan entre los dos programas del siguiente modo: el programa de llamada utiliza
la instruccin CALL USING para pasar operandos al programa llamado, y el programa llamado especifica la frase USING en la cabecera de la Divisin de Procedimiento. Tiene que haber una correlacin uno a uno entre los operandos de las
frases USING de cada programa.
Al utilizar la direccin (ADDRESS OF) del registro especial, ya no ser necesario
que asegure una correlacin una a una entre las frases USING de los dos programas. Para aquellos tems de datos de la Seccin de Enlace que no estn
especificados en la frase USING de la cabecera de la Divisin de Procedimiento, el
usuario podr utilizar una instruccin SET para especificar la direccin de inicio de
la estructura de datos. Una vez ejecutada la instruccin SET, el tem de datos se
trata como si se hubiera pasado desde otro programa. Para ver un ejemplo de
una instruccin SET utilizada de este modo, consulte la Figura 100 en la
pgina 306. El apartado .16/ de la pgina 309 muestra de qu manera la instruccin SET se utiliza para establecer la direccin de inicio de las estructuras de
datos ls-header-record y ls-user-space al comienzo del espacio de usuario.

Utilizacin de ADDRESS OF y de ADDRESS OF del Registro Especial


Cuando especifique ADDRESS OF en un programa COBOL, el compilador determinar si utilizar la direccin calculada de un tem de datos, conocida como
ADDRESS OF, o la direccin (ADDRESS OF) del registro especial. La direccin
(ADDRESS OF) del registro especial es la direccin de inicio de la estructura de
datos desde la que se determinan todas las direcciones calculadas. Dado que la
direccin (ADDRESS OF) del registro especial es una direccin de inicio de una
estructura, debe consistir en un tem de datos de nivel 01 o de nivel 77. Si modifica la referencia de este tem de datos, dejar de ser la direccin de inicio de la
estructura de datos. Se trata de una direccin calculada o ADDRESS OF. Si toma

300

COBOL/400 Gua del usuario

la direccin (ADDRESS OF) de un tem bsico, y la direccin (ADDRESS OF) del


tem de nivel 01 se ha establecido en NULL, el resultado ser una excepcin de
puntero (MCH3601).
No podr utilizar la direccin calculada ADDRESS OF donde un tem pueda ser
susceptible de cambio. Slo se puede modificar la direccin (ADDRESS OF) del
registro especial. Por ejemplo, en la Figura 100, la instruccin SET del apartado
.18/ de la pgina 309 utiliza la direccin (ADDRESS OF) de registro especial
porque se trata de un tem de nivel 01. En el apartado .19/ de la pgina 309 se
utiliza ADDRESS OF porque, aunque se trata de un tem de nivel 01, viene modificado por referencia.

Utilizacin de Punteros en una Instruccin MOVE


Los tems bsicos de datos puntero no se pueden mover mediante la instruccin
MOVE, sino que debe utilizarse una instruccin SET. Sin embargo, los tems de
datos puntero se mueven de manera implcita cuando forman parte de un tem de
grupos.
Al compilar una instruccin MOVE, el compilador de COBOL/400 genera un cdigo
para mantener (puntero MOVE) o no mantener (no puntero MOVE) punteros dentro
de un tem de grupos.
Se realiza un puntero MOVE cuando se dan todas las condiciones siguientes:
1. El fuente del receptor de una instruccin MOVE contiene un puntero
2. Ambos tems tienen, como mnimo, 16 bytes de longitud
3. Los tems de datos estn alineados convenientemente
4. Los tems de datos son alfanumricos o bien son tems de grupos.
De todas las condiciones enumeradas anteriormente, la ms compleja puede ser la
de determinar si los dos tems de datos estn convenientemente alineados.
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 relacin a un lmite de
16 bytes para que se produzca un puntero MOVE. (Se enva un mensaje de aviso
si no es verdadero). El ejemplo siguiente muestra tres estructuras de datos, as
como los resultados cuando se enva una instruccin MOVE:

Captulo 12. Comunicaciones entre Programas

301

WORKING-STORAGE SECTION.
1 A.
5 B
PIC X(1).
5 C.
1 D
PIC X(6).
1 E
POINTER.
1 A2.
5 B2
PIC X(6).
5 C2.
1 D2
PIC X(1).
1 E2
POINTER.
1 A3.
5 B3
PIC X(22).
5 C3.
1 D3
PIC X(1).
1 E3
POINTER.
PROCEDURE DIVISION.
MOVE A to A2. .1/
MOVE A to A3. .1/
MOVE C to C2. .2/
MOVE C2 to C3. .3/

.1/

Da como resultado un movimiento del puntero porque el desplazamiento


de cada tem de grupos que se han de mover es cero. La integridad
del puntero se mantiene.

.2/

Da como resultado un movimiento sin puntero, puesto que los desplazamientos no coinciden. El desplazamiento del tem de grupos C es 10
y el del tem del grupos C2 es 6. La integridad del puntero no se mantiene.

.3/

Da como resultado un movimiento del puntero, puesto que el desplazamiento del grupo de artculos C2 es 6 y el desplazamiento de C3
relativo a un lmite de 16 bytes es tambin de 6. (Cuando el desplazamiento es mayor que 16, el desplazamiento relativo al lmite de 16
bytes se calcula dividiendo el desplazamiento entre 16. El recordatorio
es el desplazamiento relativo. En este caso, el desplazamiento era 22,
lo que, dividido entre 16, da un recordatorio, o desplazamiento relativo,
de 6). La integridad del puntero se mantiene.
Si un tem de grupos contiene un puntero, y el compilador no puede
determinar el desplazamiento relativo a un lmite de 16 bytes, el compilador enva un mensaje de aviso y se intenta el traslado del puntero.
Sin embargo, es posible que la integridad no se mantenga. El compilador no puede determinar el desplazamiento si el tem se define en la
Seccin de Enlace, o si el tem viene modificado por referencia con una
posicin de inicio desconocida. Deber asegurarse de que la alineacin
del puntero se mantiene; de lo contrario, puede darse un MCH0602.

El compilador de COBOL/400 coloca todos los tems de nivel 01 en un lmite de 16


bytes tanto si contienen tems de datos puntero como si no.
Si uno de los tems de la instruccin MOVE es un tem de nivel 01 con un puntero,
y el otro es un tem de Almacenamiento de Trabajo de nivel 77, este ltimo tem va
forzosamente a un lmite de 16 bytes.

302

COBOL/400 Gua del usuario

Utilizacin de Punteros en una Instruccin CALL


Cuando un tem de datos puntero se pasa a una instruccin CALL, dicho tem se
trata como todos los tems USING. Dicho de otro modo, se pasa al programa
llamado un puntero al tem de datos puntero (o una copia del tem de datos
puntero).
Deber prestarse una especial atencin cuando se utilice una instruccin CALL con
la frase BY CONTENT para pasar punteros e tems de grupos que contengan
punteros. Es un caso parecido al de la instruccin MOVE. Para una instruccin
CALL BY CONTENT, se efecta una instruccin MOVE implcita de un tem para
crearlo en un rea temporal. Si el compilador puede determinar el desplazamiento
de un tem relativo a un lmite de 16 bytes, este mismo desplazamiento se utiliza
cuando la instruccin implcita 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 lmite de 16 bytes, la instruccin implcita MOVE del tem BY
CONTENT se realiza en un rea temporal que se alinea en un lmite de 16 bytes.
El compilador no puede determinar el desplazamiento de un tem relativo a un
lmite de 16 bytes cuando el tem BY CONTENT:
Viene modificado por referencia con una posicin de inicio desconocida, o
Est definido en la Seccin de Enlace.
Cuando un operando est modificado por referencia, el desplazamiento es la posicin de inicio de la modificacin de referencia menos uno, ms el desplazamiento
del operando de la estructura de datos. Cuando un operando se encuentre en la
Seccin de Enlace, podr determinarse su desplazamiento desde el programa de
llamada.
Para evitar problemas con la alineacin del puntero, pase los tems por referencia.
A continuacin aparece un ejemplo de paso de tems que contienen punteros, en
el que su integridad se mantiene en algunos casos y en otros no.
WORKING-STORAGE SECTION.
1

A. .1/
5 B
PIC X(3).
5 C..2/
1 FILLER
PIC X(13).
1 D
POINTER.

PROCEDURE DIVISION.
CALL "B" USING A C.
Figura 97. Programa A -- Programa Principal

Captulo 12. Comunicaciones entre Programas

303

WORKING-STORAGE SECTION.
1

77

E.
5
5
K

PIC X(16).
G
POINTER.
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.
C2..4/
5 FILLER
PIC X(13).
5 D2
POINTER.

PROCEDURE DIVISION USING A C2.


CALL "C" USING BY CONTENT
A, C2,.5/ E(5: ),.6/ E(K: ),.7/ F. .8/
Figura 98. Programa B -- Subprograma

En el ejemplo anterior, el Programa A pasa dos tems de grupo al Programa B.


.1/ es un tem de grupo de nivel 01, con un desplazamiento cero. .2/ es un tem
de grupo de nivel 05 y tiene un desplazamiento de 3. Dado que los tems se
pasan por referencia, la integridad del puntero se mantiene para los dos tems de
grupos, A y C.
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 Seccin de Enlace, tiene un desplazamiento 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 enva un mensaje de aviso del compilador en la instruccin 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 Seccin de
Enlace y el desplazamiento es desconocido, la integridad del puntero no se
mantiene. El compilador intenta mover C2 a un rea de alineacin de 16
bytes, y se enva 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 posicin de inicio de la modificacin de referencia es un literal numrico. En este caso, la integridad del
puntero se mantiene y el tem se sita en un desplazamiento de 4 desde el
lmite 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 posicin de inicio desconocida
(K), el compilador no puede calcular el desplazamiento y asume que est alineado en un lmite de 16 bytes. Se enva un mensaje de aviso del compilador.

304

COBOL/400 Gua del usuario

Si el valor de K provoca que E se alinee en un lmite de 16 bytes, la integridad


del puntero se mantiene. Para que esto ocurra, K debe ser 1 17.
.8/ F es un tem definido en la Seccin de Almacenamiento de Trabajo y no
contiene punteros, de manera que no son de esperar movimientos de puntero.

Utilizacin de Punteros y API para Acceder a Espacios de Usuario


El ejemplo siguiente muestra de qu manera puede utilizar punteros para acceder
a espacios de usuario y encadenar registros.
POINTA es un programa que lee los nombres y direcciones de los clientes en un
espacio de usuario y a continuacin visualiza la informacin en una lista. El programa asume que la informacin del cliente existe en un archivo llamado
POINTACU.
El campo de la direccin del cliente es un campo de longitud variable, lo que
permite la insercin de direcciones largas.

A\ ESTE ES UN ARCHIVO DE INFORMACIN DEL CLIENTE - POINTACUST


A
A
A
R FSCUST
TEXT('CUSTOMER MASTER RECORD')
A
FS_CUST_NO
8S
TEXT('CUSTOMER NUMBER')
A
ALIAS(FS_CUST_NUMBER)
A
FS_CUST_NM
2
TEXT('CUSTOMER NAME')
A
ALIAS(FS_CUST_NAME)
A
FS_CUST_AD
1
TEXT('CUSTOMER ADDRESS')
A
ALIAS(FS_CUST_ADDRESS)
A
VARLEN
Figura 99. Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario -- DDS

Captulo 12. Comunicaciones entre Programas

305

5763CB1 V3RM5 1
IBM SAA COBOL/4
TESTER/POINTA
AS4SYS 5/1/94 18:1:14
Programa . . . . . . . . . . . . . . :
POINTA
Biblioteca . . . . . . . . . . . . :
TESTER
Archivo fuente . . . . . . . . . . . :
QLBLSRC
Biblioteca . . . . . . . . . . . . :
TESTER
Miembro fuente . . . . . . . . . . . :
POINTA
5/1/94 17:55:27
Nivel de gravedad de generacin . . :
29
"Descripcin" del texto. . . . . . . :
\BLANK
Opciones de listado fuente . . . . . :
\NONE
Opciones de generacin . . . . . . . :
\NONE
Opciones de conversin . . . . . . . :
\NONE
Lmite de mensaje:
Cantidad de mensajes.. . . . . . . :
\NOMAX
Gravedad lmite de mensaje
. . . :
29
Imprimir archivo. . . . . . . . . . :
QSYSPRT
Biblioteca . . . . . . . . . . . . :
\LIBL
Sealizacin FIPS. . . . . . . . . . :
\NOFIPS \NOSEG \NODEB \NOOBSOLETE
Sealizacin SAA . . . . . . . . . . :
\NOFLAG
Opciones de visualizacin ampliada . :
Gravedad de sealizacin . . . . . . :

Sustituir programa . . . . . . . . . :
\YES
Release de destino . . . . . . . . . :
\CURRENT
Perfil de usuario. . . . . . . . . . :
\USER
Autorizacin . . . . . . . . . . . . :
\LIBCRTAUT
Compilador . . . . . . . . . . . . . :
IBM SAA COBOL/4
Pantalla de Informacin del Cliente .1/
5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
AS4SYS 5/1/94 18:1:14
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
FECH/CAM
1 1 PROCESS extaccdsp varchar .2/
2 2 ID DIVISION.
CBT1

3
4
5
6
7
8
9
1
11
12
13
14
15
16

17
18

19
2
21
22
23
24
25
26
27
28
29
3
31
32
33
34
35
36

4\ Este programa lee un archivo de registros de longitud variable


5\ en un espacio de usuario. A continuacin muestra los
6\ registros en la pantalla.
7 PROGRAM-ID. pointa.
8 ENVIRONMENT DIVISION.
9 CONFIGURATION SECTION.
1 SPECIAL-NAMES. CONSOLE IS CRT,
11
CRT STATUS IS ws-crt-status. .3/
12 INPUT-OUTPUT SECTION.
13 FILE-CONTROL.
14
SELECT cust-file ASSIGN TO DATABASE-pointacu
15
ORGANIZATION IS SEQUENTIAL
16
FILE STATUS IS ws-file-status.
17 DATA DIVISION.
18 FILE SECTION.
19 FD cust-file.
2 1 fs-cust-record.
21\ copiar nombres de campos transformando los subrayados
22\ en guiones y utilizando nombres de alias
23 COPY DDR-ALL-FORMATS-I OF pointacu.
+1
5 POINTACU-RECORD PIC X(13).
+2\
FORMATO E-S:FSCUST
DESDE ARCHIVO POINTACU
DE BIBLO TESTER
+3\
CUSTOMER MASTER RECORD
+4
5 FSCUST
REDEFINES POINTACU-RECORD.
+5
6 FS-CUST-NUMBER
PIC S9(8).
+6\
CUSTOMER NUMBER
+7
6 FS-CUST-NAME
PIC X(2).
+8\
CUSTOMER NAME
+9
6 FS-CUST-ADDRESS. .4/
+1\
(Campo de longitud variable)
+11
49 FS-CUST-ADDRESS-LENGTH
+12
PIC S9(4) COMP-4.
+13
49 FS-CUST-ADDRESS-DATA
+14
PIC X(1).
+15\
DIRECCIN DEL CLIENTE
24 WORKING-STORAGE SECTION.
25 1 ws-file-status.
26
5 ws-file-status-1 PIC X.
27
88 ws-file-stat-good
VALUE "".
28
88 ws-file-stat-at-end VALUE "1".
29
5 ws-file-status-2 PIC X.
3 1 ws-crt-status. .5/
31
5 ws-status-1
PIC 9(2).
32
88 ws-status-1-ok
VALUE .
33
88 ws-status-1-func-key VALUE 1.

<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS
<-ALL-FMTS

Figura 100 (Parte 1 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

306

COBOL/400 Gua del usuario

Pgina

Pgina

Pantalla de Informacin del Cliente


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
37 34
88 ws-status-1-error
VALUE 9.
38 35
5 ws-status-2
PIC 9(2).
39 36
88 ws-func-3
VALUE 3.
4 37
88 ws-func-7
VALUE 7.
41 38
88 ws-func-8
VALUE 8.
42 39
5 ws-status-3
PIC 9(2).
43 4 1 ws-params. .6/
44 41
5 ws-space.
45 42
1 ws-space-name
PIC X(1) VALUE "MYSPACE".
46 43
1 ws-space-lib
PIC X(1) VALUE "QTEMP".
47 44
5 ws-attr
PIC X(1) VALUE "PF".
48 45
5 ws-init-size
PIC S9(5) VALUE 32 BINARY.
49 46
5 ws-init-char
PIC X
VALUE SPACE.
5 47
5 ws-auth
PIC X(1) VALUE "\ALL".
51 48
5 ws-text
PIC X(5) VALUE
52 49
"Registros de Informacin del Cliente".
53 5
5 ws-replace
PIC X(1) VALUE "\YES".
54 51
5 ws-err-data. .7/
55 52
1 ws-input-l
PIC S9(6) BINARY VALUE ZERO.
56 53
1 ws-output-l
PIC S9(6) BINARY VALUE ZERO.
57 54
1 ws-exception-id
PIC X(7).
58 55
1 ws-reserved
PIC X(1).
59 56
1 ws-exception-data PIC X(87).
6 57
5 ws-space-ptr
POINTER. .8/
61 58
5 ws-map-ptr
POINTER.
59
62 6 77 ws-accept-data
PIC X.
63 61
88 ws-acc-create-space
VALUE "Y", "y".
64 62
88 ws-acc-delete-space
VALUE "Y", "y".
65 63
88 ws-acc-no-space
VALUE "N", "n".
64
66 65 77 ws-prog-indicator
PIC X
VALUE "G".
67 66
88 ws-prog-continue
VALUE "G".
68 67
88 ws-prog-end
VALUE "C".
69 68
88 ws-prog-loop
VALUE "L".
69
7 7 77 ws-line
PIC S99.
71\ lnea de mensajes de error
71 72 77 ws-error-msg
PIC X(5) VALUE SPACES.
73\ ms indicadores de informacin de direccin
72 74 77 ws-plus
PIC X.
75\ longitud la informacin de direccin a visualizar
73 76 77 ws-temp-size
PIC 9(2).
77
74 78 77 ws-current-rec
PIC S9(4) VALUE 1.
75 79 77 ws-old-rec
PIC S9(4) VALUE 1.
76 8 77 ws-old-space-ptr
POINTER.
81\ cantidad mxima de lneas a visualizar
77 82 77 ws-displayed-lines
PIC S99 VALUE 2.
83\ lnea en la que iniciar la visualizacin de registros
78 84 77 ws-start-line
PIC S99 VALUE 5.
85\ variables para crear un registro nuevo en el espacio
79 86 77 ws-addr-inc
PIC S9(4) PACKED-DECIMAL.
8 87 77 ws-temp
PIC S9(4) PACKED-DECIMAL.
81 88 77 ws-temp-2
PIC S9(4) PACKED-DECIMAL.
89\ puntero al registro anterior
82 9 77 ws-cust-prev-ptr
POINTER VALUE NULL.
83 91 LINKAGE SECTION.
84 92 1 ls-header-record. .9/
85 93
5 ls-hdr-cust-ptr
USAGE POINTER.
94\ cantidad de registros ledos desde el archivo
86 95
5 ls-record-counter
PIC S9(3) BINARY.
87 96
5 FILLER
PIC X(14). .1/
88 97 1 ls-user-space. .11/
89 98
5 ls-customer-rec.
99\ puntero al registro anterior del cliente
9 1
1 ls-cust-prev-ptr
USAGE POINTER.
91 11
1 ls-cust-rec-length
PIC S9(4) BINARY.
92 12
1 ls-cust-name
PIC X(2).
93 13
1 ls-cust-number
PIC S9(8).

AS4SYS 5/1/94 18:1:14


S NOMCOPIA
FECH/CAM

Pgina

Figura 100 (Parte 2 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

Captulo 12. Comunicaciones entre Programas

307

Pantalla de Informacin del Cliente


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
14\ longitud total del registro incluyendo bytes de relleno para
15\ asegurarse de que el siguiente registro est en el lmite de 16 bytes
94 16
1 ls-cust-address-length PIC S9(4) BINARY.
95 17
5 ls-cust-address-data
PIC X(116).
18
19\ Tamao de ls-user-space es 16 ms grande de lo necesario.
11\
As pues, la direccin de inicio del siguiente registro
111\
permite establecerlo sin exceder el tamao declarado
112\ El tamao es 16 ms grande para permitir la alineacin del puntero
113
96 114 PROCEDURE DIVISION.
115\ nota no necesaria para la entrada "USING" en PROC... DIV.
116 DECLARATIVES.
117 cust-file-para SECTION.
118
USE AFTER ERROR PROCEDURE ON cust-file.
119 cust-file-para-2.
97 12
MOVE "Error XX on file pointacu" TO ws-error-msg.
98 121
MOVE ws-file-status TO ws-error-msg(7:2).
122 END DECLARATIVES.
123 main-section section.
124 main-proc.
125\ siga leyendo la pantalla inicial hasta que los datos sean correctos
99 126
SET ws-prog-loop to TRUE.
1 127
PERFORM initial-display THRU read-initial-display
128
UNTIL NOT ws-prog-loop.
129\ si desea continuar el programa y quiere crear un rea de
13\
informacin de cliente, rellene el espacio con
131\
registros del archivo del cliente
11 132
IF ws-prog-continue and
133
ws-acc-create-space THEN
12 134
PERFORM read-customer-file
13 135
MOVE 1 TO ws-current-rec
136\ establezca ptr en el registro de cabecera
14 137
SET ADDRESS OF ls-header-record TO ws-space-ptr
138\ establezca en el primer registro del cliente en espacio
15 139
SET ADDRESS OF ls-user-space TO ls-hdr-cust-ptr
14
END-IF.
16 141
IF ws-prog-continue THEN
17 142
PERFORM main-loop UNTIL ws-prog-end
143
END-IF.
144 end-program.
18 145
PERFORM clean-up.
19 146
STOP RUN.
147 initial-display. .12/
11 148
DISPLAY "Crear rea de Informacin del Cliente" AT 118 WITH
149
BLANK SCREEN REVERSE-VIDEO
15
"Crear rea de informacin del cliente (Y/N)=>
<="
151
AT 115
152
"F3=Salir" AT 222.
111 153
IF ws-error-msg NOT = SPACES THEN
112 154
DISPLAY ws-error-msg at 232 with beep highlight
113 155
MOVE SPACES TO ws-error-msg
156
END-IF.
157 read-initial-display. .13/
114 158
ACCEPT ws-accept-data AT 156 WITH REVERSE-VIDEO
159
ON EXCEPTION
115 16
IF ws-status-1-func-key THEN
116 161
IF ws-func-3 THEN
117 162
SET ws-prog-end TO TRUE
163
ELSE
118 164
MOVE "Tecla de Funcin Incorrecta" TO ws-error-msg
165
END-IF
166
ELSE
119 167
MOVE "Error Desconocido" TO we-error-msg
168
END-IF
169
NOT ON EXCEPTION

AS4SYS 5/1/94 18:1:14


S NOMCOPIA
FECH/CAM

Figura 100 (Parte 3 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

308

COBOL/400 Gua del usuario

Pgina

Pantalla de Informacin del Cliente


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
AS4SYS
12 17
IF ws-acc-create-space THEN
121 171
PERFORM create-space THRU get-space
122 172
SET ws-prog-continue TO TRUE
173
ELSE
123 174
IF NOT ws-acc-no-space THEN
124 175
MOVE "Entrado Carcter incorrecto" TO ws-error-msg
176
ELSE
125 177
SET ws-prog-continue TO TRUE
126 178
PERFORM get-space
179
END-IF
18
END-IF
181
END-ACCEPT.
182 create-space.
127 183
CALL "QUSCRTUS" .14/
184
USING ws-space, ws-attr, ws-init-size,
185
ws-init-char, ws-auth, ws-text,
186
ws-replace, ws-err-data.
187\ compruebe los errores al crear espacio
188 get-space.
128 189
CALL "QUSPTRUS" USING ws-space, ws-space-ptr. .15/
19\ establezca el registro de cabecera al comienzo del espacio
129 191
SET ADDRESS OF ls-header-record .16/
192
ADDRESS OF ls-user-space .17/
193
TO ws-space-ptr.
194\ establezca el primer registro del cliente despus del registro de cabecera
13 195
SET ADDRESS OF ls-user-space TO .18/
196
ADDRESS OF ls-user-space(LENGTH OF ls-header-record .19/
197
+ 1:1).
198\ guarde ptr para el primer registro del registro de cabecera
131 199
SET ls-hdr-cust-ptr TO ADDRESS OF ls-user-space.
2 delete-space.
132 21
CALL "QUSDLTUS" USING ws-space, ws-err-data. .2/
22 read-customer-file.
23\ lea todos los registros del archivo del cliente y colquese en el espacio
133 24
OPEN INPUT cust-file.
134 25
IF ws-file-stat-good THEN
135 26
READ cust-file AT END CONTINUE
136 27
END-READ
137 28
PERFORM VARYING ls-record-counter FROM 1 BY 1
29
UNTIL not ws-file-stat-good
138 21
SET ls-cust-prev-ptr TO ws-cust-prev-ptr
211\ Coloque la informacin del archivo al espacio
139 212
MOVE fs-cust-name
TO ls-cust-name
14 213
MOVE fs-cust-number
TO ls-cust-number
141 214
MOVE fs-cust-address-length TO ls-cust-address-length
142 215
MOVE fs-cust-address-data(1:fs-cust-address-length)
216
TO ls-cust-address-data(1:ls-cust-address-length)
217\ Guarde ptr para el registro actual
143 218
SET ws-cust-prev-ptr TO ADDRESS OF ls-user-space
219\ asegrese de que el siguiente registro est en el lmite de 16 bytes
144 22
ADD LENGTH OF ls-customer-rec .21/
221
ls-cust-address-length TO 1 GIVING ws-addr-inc
145 222
DIVIDE ws-addr-inc BY 16 GIVING ws-temp
223
REMAINDER ws-temp-2
146 224
SUBTRACT ws-temp-2 FROM 16 GIVING ws-temp
225\ Guarde la longitud total del registro en el espacio del usuario
147 226
ADD ws-addr-inc TO ws-temp GIVING ls-cust-rec-length
148 227
SET ADDRESS OF ls-user-space
228
TO ADDRESS OF ls-user-space(ls-cust-rec-length + 1:1)
229\ Obtenga el siguiente registro del archivo
149 23
READ cust-file AT END CONTINUE
15 231
END-READ
232
END-PERFORM
233\ Al final del bucle coloque un registro ms de los
234\
que debe haber
151 235
SUBTRACT 1 FROM ls-record-counter
236
END-IF.
152 237
CLOSE cust-file.
238
239 main-loop. .22/
24\ escriba los registros en la pantalla hasta que se pulse F3

5/1/94 18:1:14

Pgina

Figura 100 (Parte 4 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

Captulo 12. Comunicaciones entre Programas

309

Pantalla de Informacin del Cliente


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
153 241
DISPLAY "Informacin del cliente" AT 124 WITH
242
BLANK SCREEN REVERSE-VIDEO
243
"Cust
Customer Name
Customer"
244
AT 35
245
" Address"
246
"Number"
AT 45
247
"F3=Salir" AT 222.
248\ si aparece un error pendiente en la pantalla
154 249
IF ws-error-msg NOT = SPACES THEN
155 25
DISPLAY ws-error-msg at 232 with beep highlight
156 251
MOVE SPACES TO ws-error-msg
252
END-IF.
253\ si en la mitad de la lista se pulsa F7 en la pantalla
157 254
IF ws-current-rec > 1 THEN .23/
158 255
DISPLAY "F7=Back" AT 224
256
END-IF.
257\ guarde el registro actual
159 258
MOVE ws-current-rec TO ws-old-rec.
16 259
SET ws-old-space-ptr TO ADDRESS OF ls-user-space. .24/
26\ traslade cada registro a la pantalla
161 261
PERFORM VARYING ws-line FROM ws-start-line BY 1
262
UNTIL ws-line > ws-displayed-lines or
263
ws-current-rec > ls-record-counter
264\ si la direccin es mayor que el ancho de pantalla "+"
162 265
IF ls-cust-address-length > 4 THEN
163 266
MOVE "+" TO ws-plus
164 267
MOVE 4 TO ws-temp-size
268
ELSE
165 269
MOVE ls-cust-address-length TO ws-temp-size
166 27
MOVE SPACE TO ws-plus
271
END-IF
167 272
DISPLAY ls-cust-number at line ws-line column 5
273
ls-cust-name ls-cust-address-data with
274
size ws-temp-size ws-plus at line
275
ws-line column 78
276\ coloque el siguiente registro en la pantalla
168 277
ADD 1 TO ws-current-rec
169 278
SET ADDRESS OF ls-user-space
279
TO ADDRESS OF ls-user-space
28
(ls-cust-rec-length + 1:1)
281
END-PERFORM.
282\ si se puede seguir pulse F8 en la pantalla
17 283
IF ws-current-rec < ls-record-counter THEN .23/
171 284
DISPLAY "F8=Av Pg" AT 225
285
END-IF.
286\ compruebe si contina, salga u obtenga nuevos registros
287\
o registros anteriores
172 288
ACCEPT ws-accept-data WITH SECURE .25/
289
ON EXCEPTION
173 29
IF ws-status-1-func-key THEN
174 291
IF ws-func-3 THEN
175 292
SET ws-prog-end TO TRUE
293
ELSE
176 294
IF ws-func-7 THEN
177 295
PERFORM back-screen
296
ELSE
178 297
IF ws-func-8 THEN
179 298
PERFORM forward-screen
299
ELSE
18 3
MOVE "Invalid Function Key" TO ws-error-msg
181 31
MOVE ws-old-rec TO ws-current-rec
182 32
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
33
END-IF
34
END-IF
35
ELSE
183 36
MOVE "Unknown Error" TO ws-error-msg
184 37
MOVE ws-old-rec TO ws-current-rec
185 38
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
39
END-IF
31
NOT ON EXCEPTION
186 311
MOVE ws-old-rec TO ws-current-rec
187 312
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
313
END-ACCEPT.
314 clean-up.
315\ limpie el programa

AS4SYS

5/1/94 18:1:14

Figura 100 (Parte 5 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

310

COBOL/400 Gua del usuario

Pgina

Pantalla de Informacin del Cliente


5763CB1 V3RM5 1
Fuente COBOL AS/4
TESTER/POINTA
AS4SYS 5/1/94 18:1:14
316\ siga leyendo la pantalla final hasta que los datos sean correctos
188 317
SET ws-prog-loop to TRUE.
189 318
PERFORM end-display THRU read-end-display .26/
319
UNTIL NOT ws-prog-loop.
32 end-display.
19 321
DISPLAY "Eliminar rea de Informacin del Cliente" AT 118 WITH .27/
322
BLANK SCREEN REVERSE-VIDEO
323
"Eliminar rea de informacin del cliente (Y/N)=>
<="
324
AT 115
325
"F3=Salir" AT 222.
191 326
IF ws-error-msg NOT = SPACES THEN
192 327
DISPLAY ws-error-msg at 232 with beep highlight
193 328
MOVE SPACES TO ws-error-msg
329
END-IF.
33 read-end-display.
194 331
ACCEPT ws-accept-data AT 156 WITH REVERSE-VIDEO
332
ON EXCEPTION
195 333
IF ws-status-1-func-key THEN
196 334
IF ws-func-3 THEN
197 335
SET ws-prog-end TO TRUE
336
ELSE
198 337
MOVE "Tecla de Funcin Incorrecta" TO ws-error-msg
338
END-IF
339
ELSE
199 34
MOVE "Error Desconocido" TO we-error-msg
341
END-IF
342
NOT ON EXCEPTION
2 343
IF ws-acc-delete-space THEN
21 344
PERFORM delete-space
22 345
SET ws-prog-continue TO TRUE
346
ELSE
23 347
IF NOT ws-acc-no-space THEN
24 348
MOVE "Entrado Carcter incorrecto" TO ws-error-msg
349
ELSE
25 35
SET ws-prog-continue TO TRUE
351
END-IF
352
END-IF
353
END-ACCEPT.
354 back-screen. .28/
26 355
IF ws-old-rec <= 1 THEN
27 356
MOVE "Top of customer records" TO ws-error-msg
28 357
MOVE ws-old-rec TO ws-current-rec .29/
29 358
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
359
ELSE
21 36
MOVE ws-old-rec TO ws-current-rec .29/
211 361
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
212 362
PERFORM VARYING ws-line FROM ws-start-line BY 1
363
UNTIL ws-line > ws-displayed-lines or
364
ws-current-rec <= 1
365\ Efecta la copia de seguridad de un registro a la vez
213 366
SET ws-cust-prev-ptr TO ls-cust-prev-ptr
214 367
SET ADDRESS OF ls-user-space TO ws-cust-prev-ptr .3/
215 368
SUBTRACT 1 FROM ws-current-rec
369
END-PERFORM
37
END-IF.
371 forward-screen. .31/
372\ si el registro actual es igual o mayor que los errores de impersin
373\
de registro mximo, alcance los registros mximos
216 374
IF ws-current-rec >= ls-record-counter
217 375
MOVE "No more customer records" TO ws-error-msg
218 376
MOVE ws-old-rec TO ws-current-rec
219 377
SET ADDRESS OF ls-user-space TO ws-old-space-ptr
378
ELSE
22 379
MOVE ws-current-rec TO ws-old-rec
221 38
SET ws-old-space-ptr TO ADDRESS OF ls-user-space
381
END-IF.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
Pantalla de Informacin del Cliente
5763CB1 V3RM5 1
Mensajes COBOL AS/4
TESTER/POINTA
AS4SYS 5/1/94 18:1:14
INST
\
15 MSGID: LBL65 GRAVEDAD: NUMSEC: 19
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'CUST-FILE'
se realizar por medio del cdigo generado por el compilador.
\ \ \ \ \
F I N
D E
M E N S A J E S
\ \ \ \ \

Pgina

Pgina

Figura 100 (Parte 6 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

Captulo 12. Comunicaciones entre Programas

311

Resumen Mensajes
Total
Info(-4)
Aviso(5-19)
Error(2-29)
Grave(3-39)
Terminal(4-99)
1
1

Registros fuente ledos . . . . . . :


381
Registros de copia ledos . . . . . :
15
Miembros de copia procesados . . . :
1
Errores de secuencia . . . . . . . :

Mensaje de gravedad emitido ms alto:

LBL91 Programa POINTA creado en biblioteca TESTER.


\ \ \ \ \
F I N
D E
C O M P I L A C I O N
\ \ \ \ \

Figura 100 (Parte 7 de 7). Ejemplo de Utilizacin de Punteros para Acceder a Espacios de Usuario

312

.1/

La directriz del compilador TITLE se utiliza para crear el ttulo que


aparece al principio de cada pgina.

.3/

CRT STATUS IS especifica un nombre de datos en el que se coloca un


valor de estado despus de la finalizacin de una instruccin ACCEPT
ampliada. En este ejemplo, el valor de STATUS se utiliza para determinar la tecla de funcin que se ha pulsado.

.4/

fs-cust-address es un campo de longitud variable. Para ver nombres


con significado real, en lugar de una instruccin FILLER, especifique
*VARCHAR para el parmetro CVTOPT del mandato CRTCBLPGM, o
VARCHAR en la instruccin PROCESS, tal como se muestra en el
apartado .2/. Para ms informacin acerca de los campos de longitud
variable, consulte el apartado Declaracin de tems de Datos utilizando
Tipos de Datos de CVTOPT en la pgina 137.

.5/

En este apartado se define CRT STATUS tal como se menciona en el


apartado .3/.

.6/

La estructura ws-params contiene los parmetros utilizados al llamar a


las API para acceder a espacios de usuario.

.7/

ws-err-data es la estructura del parmetro de error para las API del


espacio de usuario. Observe que ws-input-l es cero, lo que significa
que toda excepcin est sealada y no se pasa en el parmetro de
cdigos de error. Para ms informacin acerca de los parmetros de
cdigos de error, consulte la publicacin System Programmers 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
Seccin 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 alineacin del puntero, porque convierte a Is-header-record en un mltiplo 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 informacin del cliente). Esta pantalla aparece en la
Figura 101 en la pgina 314.

COBOL/400 Gua del usuario

.13/

read-initial-display lee la primera pantalla y determina si el usuario elige


continuar o concluir el programa. Si el usuario contina el programa
pulsando Intro, el programa comprobar la estructura ws-accept-data
para ver si el rea de informacin del cliente se va a crear.

.14/

QUSCRTUS es una API utilizada para crear espacios de usuario.

.15/

QUSPTRUS es una API utilizada para devolver un puntero al inicio de


un espacio de usuario.

.16/

Correlaciona la primera estructura de datos (ls-header-record) sobre el


inicio del espacio de usuario.

.17/

Correlaciona la segunda estructura de datos (ls-user-space) sobre el


inicio del espacio de usuario.

.18/

Utiliza la direccin (ADDRESS OF) del registro especial.

.19/

Utiliza ADDRESS OF, no la direccin (ADDRESS OF) del registro especial, porque est modificado por referencia.

.2/

QUSDLTUS es una API utilizada para suprimir un espacio de usuario.

.21/

Las cuatro instrucciones aritmticas siguientes calculan la longitud total


de cada registro y aseguran que cada registro sea un mltiplo de 16
bytes de longitud.

.22/

main-loop contiene la pantalla Informacin del Cliente. Consulte la


Figura 102 en la pgina 314.

.23/

Estas instrucciones determinan si el programa debe visualizar las teclas


de funcin F7 y F8.

.24/

Guarda un puntero al primer registro de cliente de la pantalla.

.25/

Esta instruccin ACCEPT espera la entrada de la pantalla de Informacin del Cliente. Partiendo de la tecla de funcin pulsada, llama al
prrafo adecuado para visualizar el siguiente conjunto de registros
(forward-screen), o el anterior conjunto de registros (back-screen), o
establece un indicador para finalizar la rutina si se pulsa F3.

.26/

La rutina de borrado visualiza la pantalla Suprimir rea de Informacin


del Cliente hasta que se pulsa la tecla adecuada.

.27/

Esta instruccin contiene la pantalla Suprimir rea de Informacin de


Cliente.

.28/

Cada registro contiene un puntero al registro de cliente anterior. La


direccin (ADDRESS OF) del registro especial se direcciona al registro
de cliente actual. Al cambiar la direccin (ADDRESS OF) del registro
especial, cambia el registro de cliente actual.

back-screen retrasa el puntero de registro actual un registro a la vez


.3/, moviendo el puntero del registro de cliente anterior al puntero del
registro del cliente actual (ADDRESS OF). Antes de retrasar un registro
a la vez, el programa establece el registro de cliente actual en el primer
registro visualizado actualmente .29/.
.31/

Forward-screen establece la estructura ws-old-space-ptr (que se


direcciona al primer registro de la pantalla) para que se direccione al
registro actual (que est despus del ltimo registro visualizado).
Un espacio de usuario siempre empieza en un lmite de 16 bytes, de
modo que el mtodo descrito en este apartado asegura que todos los
Captulo 12. Comunicaciones entre Programas

313

registros estn alineados. ls-cust-rec-length tambin se utiliza para


encadenar los registros.
Cuando ejecute POINTA, observar las pantallas siguientes:

Crear rea de Informacin del Cliente

Crear rea de informacin del cliente (Y/N)=> y <=

F3=Salir

Figura 101. Crear Pantalla del rea de Informacin del Cliente

Si se especifica Y para crear el espacio de usuario, el programa lee los registros


del cliente del archivo y coloca la informacin en el espacio de usuario. Los registros se encadenan juntos.
Cuando se pulsa Intro en la pantalla anterior, aparece la pantalla de Informacin
del Cliente:

Informacin del Cliente


Nm
Cliente
1
2
3
4
5
6
7
8
9
1
11
12
13
14
15
16
F3=Salir

Nombre Cliente

Direccin Cliente

Bakery Unlimited
Window World
Jons Clothes
Pizza World
Marv's Auto Body
Jack's Snacks
Video World
Pat's Daycare
Mary's Pies
Carol's Fashions
Grey Optical
Fred's Forage
Dave's Trucking
Doug's Music
Anytime Copiers
Rosa's Ribs

3 Bake Way, North York


15 Eglinton Ave E., North York, Ontario
11 Park St, North Bay, Ontario, Canada
254 Main Street, Toronto, Ontario
9 George St, Peterborough, Ontario, Cana
23 North St, Timmins, Ontario, Canada
14 Robson St, Vancouver, B.C, Canada
8 Kingston Rd, Pickering, Ontario, Canad
3 Front St, Toronto, Ontario, Canada
19 Spark St, Ottawa, Ontario, Canada
5 Lundy's Lane, Niagara Falls, Ont. Cana
33 Dufferin St, Toronto, Ontario, Canada
15 Water St, Guelph, Ontario, Canada
11 Queen St. Toronto, Ontario, Canada
3 Warden Ave, Scarborough, Ontario, Ca
44 Avenue Rd, Toronto, Ontario, Canada

Figura 102. Pantalla del rea de Informacin del Cliente

COBOL/400 Gua del usuario

+
+
+
+
+

F8=Av Pg

314

+
+

Si hay ms de 16 registros en el espacio de usuario (segn la lnea inicial en wsstart-line), el programa habilita la tecla F8=Av Pg, para permitir al usuario que
avance las pginas de la lista. Cuando el usuario ha avanzado alguna pgina, se
habilita la tecla F7=Re Pg para que el usuario pueda retroceder las pginas de la
lista, tal como se muestra en la siguiente pantalla:

Informacin del Cliente


Nm
Cliente
17
18
19
2
21
22

F3=Salir

Nombre Cliente

Direccin Cliente

Picture It
Paula's Flowers
Mom's Diapers
Chez Francois
Vetements de Louise
Good Eats

33 Kingston Rd, Ajax, Ontario, Canada


144 Pape Ave, Toronto, Ontario, Canada
11 Ford St, Toronto, Ontario, Canada
122 Rue Ste Anne, Montreal, PQ, Canada
892 Rue Sherbrooke, Montreal E, PQ, Cana
355 Lake St, Port Hope, Ontario, Canada

F7=Re Pg

Figura 103. Pantalla de Informacin del Cliente (Segunda Pantalla)

Cuando el cliente sale de la pantalla anterior, se muestra la opcin que permite


suprimir el espacio de usuario, tal como se muestra en la pantalla siguiente:

Suprimir rea de Informacin del Cliente

Surprimir rea de informacin del cliente (Y/N)=> n <=

F3=Salir

Figura 104. Suprimir Pantalla de Informacin del Cliente

Captulo 12. Comunicaciones entre Programas

315

Proceso de una Lista Encadenada


Una aplicacin tpica para la utilizacin de tems de datos puntero es el proceso de
una lista encadenada (una serie de registros en la que cada uno direcciona al
siguiente).
En este ejemplo, supongamos una lista encadenada compuesta de registros de
salarios individuales. La Figura 105 muestra un modo de visualizar cmo se
enlazan estos registros en el almacenamiento:

REGISTRO SALARIO6

PTRSIG.REG dir. de reg.

NULLdir.

siguiente

no vlida

NOMBRE

. . .

SALARIO

Figura 105. Representacin de una Lista Encadenada que Acaba en NULL

El primer tem de cada registro se direcciona al registro siguiente (excepto en el


caso del ltimo registro). El primer tem del ltimo registro contiene un valor nulo
en lugar de una direccin, con el fin de indicar que se trata del ltimo registro.
La lgica de nivel superior de una aplicacin 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
La Figura 106 en la pgina 317 contiene un diseo del programa de proceso,
LISTS, utilizado en este ejemplo de proceso de una lista encadenada.

316

COBOL/400 Gua del usuario

IDENTIFICATION DIVISION.
PROGRAM-ID. LISTS.
ENVIRONMENT DIVISION.
DATA DIVISION.
\\\\\\
WORKING-STORAGE SECTION.
77 PTR-FIRST
POINTER VALUE IS NULL.
77 DEPT-TOTAL
PIC 9(4) VALUE IS .
\\\\\\
LINKAGE SECTION.
1 SALARY-REC.
2 PTR-NEXT-REC
POINTER.
2 NAME
PIC X(2).
2 DEPT
PIC 9(4).
2 SALARY
PIC 9(6).
1 DEPT-X
PIC 9(4).
\\\\\\
PROCEDURE DIVISION USING DEPT-X.
\\\\\\
\ PARA TODOS EN EL DEPTO. RECIBIDOS COMO DEPT-X, REVISEN TODOS
\ LOS REGISTROS DE LA LISTA EN CADENA SEGN LA DIRECCIN DEL
\ PROGRAMA CHAIN-ANCH Y SUMEN LOS SALARIOS EN CADA REGISTRO.
\ EN CADA REGISTRO, PRT-NEXT-REC ES UN PUNTERO PARA EL
\ SIGUIENTE REGISTRO DE LA LISTA; EN EL LTIMO REGISTRO,
\ PRT-NEXT-REC ES NULO.
\ VISUALIZAR EL TOTAL.
\\\\\\
CALL "CHAIN-ANCH" USING PTR-FIRST
SET ADDRESS OF SALARY-REC TO PTR-FIRST
\\\\\\
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
\\\\\\
DISPLAY DEPT-TOTAL
GOBACK.

Figura 106. Programa para el Proceso de una Lista Encadenada

Paso de Direcciones entre Programas


Para obtener la direccin de la primera rea de registro SALARY-REC, el programa LISTS llama al programa CHAIN-ANCH:
CALL "CHAIN-ANCH" USING PTR-FIRST
PTR-FIRST est definido en WORKING-STORAGE en el programa de llamada
(LISTS) como un tem de datos puntero:
WORKING-STORAGE SECTION.
77 PTR-FIRST
POINTER

VALUE IS NULL.

A la vuelta de la llamada a CHAIN-ANCH, PTR-FIRST contiene la direccin del


primer registro en la lista encadenada.
PTR-FIRST se define inicialmente por tener un valor nulo como comprobacin
lgica. Si se produce un error con la llamada, y PTR-FIRST no llega a recibir el
valor de la direccin del primer registro en la cadena, seguir habiendo un valor
nulo en PTR-FIRST y, en funcin de la lgica del programa, los registros no se
procesarn.

Captulo 12. Comunicaciones entre Programas

317

NULL es una constante figurativa utilizada para asignar el valor de una direccin
no vlida a tems puntero. Puede utilizarse en la clusula VALUE IS NULL, en la
instruccin SET y como operando en una condicin de relacin con un tem de
datos puntero.
La Seccin de Enlace del programa de llamada contiene la descripcin de los
registros en la lista encadenada. Contiene asimismo la descripcin del cdigo de
departamento que se pasa a travs de la frase USING de la instruccin CALL.
LINKAGE SECTION.
1 SALARY-REC.
2 PTR-NEXT-REC
2 NAME
2 DEPT
2 SALARY
1 DEPT-X

POINTER.
PIC X(2).
PIC 9(4).
PIC 9(6).
PIC 9(4).

Para basar la descripcin del registro SALARY-REC de la direccin contenida en


PTR-FIRST, utilice la instruccin SET:
CALL "CHAIN-ANCH" USING PTR-FIRST
SET ADDRESS OF SALARY-REC TO PTR-FIRST

Comprobacin de la Finalizacin de una Lista Encadenada


La lista encadenada de este ejemplo se configura de manera que el ltimo registro
contenga una direccin no vlida. Para ello, el tem de datos puntero del ltimo
registro tendra asignado el valor NULL.
Puede asignarse el valor NULL a un tem de datos puntero de dos modos:
Un tem de datos puntero puede definirse con una clusula VALUE IS NULL
en su definicin de datos.
NULL puede ser el campo de envo en una instruccin SET.
El valor inicial de un tem de datos puntero con o sin una clusula VALUE de
NULL da igual a NULL.
En el caso de una lista encadenada en la que el puntero del ltimo registro contenga un valor nulo, el cdigo para comprobar la finalizacin de la lista sera:
IF PTR-NEXT-REC = NULL

..
.

(lgica de finalizacin de cadena)


Si no ha llegado al final de la lista, procese el registro y vaya al siguiente registro.
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

318

COBOL/400 Gua del usuario

Continuacin del Proceso del Siguiente Registro


Para ir al siguiente registro, establezca la direccin de ste en la Seccin de
Enlace de manera que sea igual a la direccin del siguiente registro. Este acto se
realiza a travs del tem de datos puntero enviado como primer campo en
SALARY-REC:
SET ADDRESS OF SALARY-REC TO PTR-NEXT-REC
A continuacin repita la rutina de proceso de registros, que procesar el siguiente
registro en la lista encadenada.

Incremento de las Direcciones Recibidas de Otro Programa


Los datos desde un programa de llamada pueden contener informacin de cabecera de la cual decida prescindir (por ejemplo, en los datos recibidos desde una
aplicacin CICS que no se ha migrado al nivel de mandatos).
Dado que los tems de datos puntero no son numricos, el usuario no podr efectuar aritmtica directamente sobre ellos. No obstante, podr utilizar el verbo SET
para incrementar la direccin pasada para ignorar la informacin de cabecera.
Puede configurar la Seccin de Enlace de la siguiente manera:

..
.

LINKAGE SECTION.
1 RECORD-A.
2 HEADER
PIC X(16).
2 REAL-SALARY-REC PIC X(3).
1

SALARY-REC.
PTR-NEXT-REC
NAME
DEPT
SALARY

2
2
2
2

POINTER.
PIC X(2).
PIC 9(4).
PIC 9(6).

En la Divisin de Procedimiento, site la direccin de SALARY-REC en la direccin


de REAL-SALARY-REC:
SET ADDRESS OF SALARY-REC TO ADDRESS OF REAL-SALARY-REC
SALARY-REC se ha situado ahora en la direccin de RECORD-A + 16.

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 ms informacin acerca de la creacin y declaracin de
un rea de datos, consulte la publicacin CL Gua del Programador.

rea de Datos Local


El rea de datos local puede utilizarse para pasar cualquier informacin entre programas en un trabajo. Esta informacin puede consistir en datos en formato libre,
como por ejemplo mensajes informales, o puede ser tambin un conjunto de
campos totalmente estructurado o con formato.

Captulo 12. Comunicaciones entre Programas

319

El sistema crea automticamente un rea de datos local para cada trabajo. El rea
de datos local est definida fuera del programa COBOL como una rea de 1024
bytes.
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 ningn 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 mnemotcnico asociado
al nombre de funcin LOCAL-DATA.
Slo hay un rea de datos local asociada a cada trabajo. Incluso si se adquieren
varias estaciones de trabajo mediante un nico trabajo, slo existe un rea de
datos local para dicho trabajo. No hay un rea de datos local para cada estacin
de trabajo.

rea de Datos PIP (Parmetros de Inicializacin de Programas)


El rea de datos PIP es utilizada por un trabajo de prearranque. Generalmente, un
trabajo de prearranque es un trabajo de un sistema remoto bajo ICF que el usuario
inicia y mantiene listo para ejecutar hasta que lo llama.
Si utiliza un trabajo de prearranque, no tiene que esperar a que un programa que
usted llama vaya a travs del proceso de inicializacin de un trabajo. La iniciacin
de trabajo se realiza antes de que un programa pueda iniciarse realmente. Dado
que ya se ha realizado la iniciacin del trabajo, un trabajo de prearranque permite
que el programa se inicie ms rpidamente una vez recibida la peticin de
arranque del programa.
Un programa COBOL puede acceder al rea de datos PIP para su trabajo con la
instruccin ACCEPT, utilizando un nombre mnemotcnico asociado con el nombre
de funcin PIP-DATA.
El rea de datos PIP es un tem alfanumrico de 2000 bytes que contiene parmetros recibidos desde un programa de llamada. Proporciona los parmetros de
inicializacin que, en trabajos que no son de prearranque, se ofrece mediante los
parmetros COBOL estndar.
Utilice una instruccin ACCEPT de Formato 5 para acceder al rea de datos PIP,
similar a la manera en que utiliza la instruccin 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 publicacin COBOL/400 Reference para
obtener informacin de sintaxis detallada.
Para ms informacin acerca de los trabajos de prearranque y del rea de datos
PIP, consulte la publicacin Gua para la Gestin de Trabajos y la publicacin CL
Gua del Programador.

320

COBOL/400 Gua del usuario

Consideraciones de Archivo
Puede pasar un nombre de archivo como parmetro en un programa COBOL, pero
no podr utilizar dicho archivo en el programa llamado. Si se define un archivo en
un programa de llamada y un programa llamado, se trata como dos archivos distintos. El contenido del rea de registro y el puntero del registro actual en cada
programa son independientes, a menos que los archivos compartidos se especifiquen en mandatos CL. Consulte la publicacin Gua para la Gestin de Datos
para ms informacin acerca de los archivos compartidos.
Las instrucciones siguientes afectan al estado de archivo de manera diferente:
Una instruccin EXIT PROGRAM no cambia el estado de cualquier archivo en
una unidad de ejecucin.
Una instruccin STOP RUN cierra todos los archivos de una unidad de ejecucin.
Ampliacin de IBM
Una instruccin A GOBACK emitida desde un programa principal cierra todos
los archivos de una unidad de ejecucin. Una instruccin GOBACK emitida
desde un subprograma no cambia el estado de ningn archivo en una unidad
de ejecucin.
Fin de Ampliacin de IBM
Una instruccin CANCEL no cambia el estado de ningn archivo en el programa que se cancela. Libera el almacenamiento que contiene informacin
acerca del archivo. Si el programa tiene archivos que se abren cuando se
procesa la instruccin CANCEL, esos archivos se cierran cuando se cancela el
programa. El programa ya no puede seguir utilizando el archivo. Si el programa cancelado se llama de nuevo, el programa considera que el archivo
est cerrado. Si el programa abre el archivo, se establece un nuevo enlace
para dicho archivo. Esto puede hacer que se utilice el almacenamiento auxiliar
del sistema.

Captulo 12. Comunicaciones entre Programas

321

322

COBOL/400 Gua del usuario

Apndice A. Caractersticas de segmentacin


No se preocupe de la gestin del almacenamiento cuando utilice programas
COBOL/400. Sin embargo, la segmentacin de almacenamiento est disponible
para ofrecer compatibilidad con otros sistemas.
La caracterstica de segmentacin proporciona optimizacin de almacenamiento de
la Divisin de Procedimientos controlada por el programador, permitiendo que esta
divisin se subdivida tanto fsica como lgicamente.

Conceptos referentes a la segmentacin


Aunque no es necesaria, la Divisin de Procedimientos de un programa fuente
suele grabarse como un grupo consecutivo de secciones, estando formada, cada
una de ellas, por una serie de operaciones relacionadas que llevan a cabo una
funcin determinada. As pues, la totalidad de la Divisin de Procedimientos se
compone de un cierto nmero de subdivisiones lgicas. La segmentacin permite
que el programador divida fsicamente la Divisin de Procedimientos en segmentos, cada uno de los cuales tiene unos atributos fsicos y lgicos especficos.
Cuando se utiliza la segmentacin, la totalidad de la Divisin de Procedimientos se
divide en secciones. Cada seccin debe clasificarse de acuerdo con sus atributos
fsicos y lgicos. La clasificacin se especifica mediante los nmeros de segmento. Todas las secciones que tengan el mismo nmero de segmento componen
un segmento de programa.
Los nmeros de segmento han de ser enteros del 0 al 99.

Segmentos de Programa
Hay tres tipos de segmentos de programa: permanente fijo, recubrible fijo e independiente.

Segmentos Fijos
Los segmentos permanentes fijos y los segmentos recubribles fijos componen la
parte fija, la parte de la Divisin de Procedimientos que se trata lgicamente como
si estuviese siempre presente fsicamente en almacenamiento principal. Los
nmeros de segmento de la parte fija han de ser enteros del 0 al 49.
Un segmento permanente fijo queda disponible siempre en su ltimo estado de
utilizacin.
Un segmento recubrible fijo est siempre lgicamente en el almacenamiento principal durante el proceso del programa; por lo tanto, siempre se encuentra disponible en su ltimo estado de utilizacin. Cualquier recubrimiento de uno de esos
segmentos es transparente para el usuario. De este modo, un segmento fijo recubrible es idntico lgicamente a un segmento permanente fijo.

Copyright IBM Corp. 1994

323

Segmentos Independientes
Obviamente, un segmento independiente puede recubrir y ser recubierto por otros
segmentos durante la ejecucin de un programa.
Un segmento independiente queda disponible en su estado inicial la primera vez
que se le transfiere control (explcita o implcitamente) durante la ejecucin de un
programa.
Un segmento independiente queda disponible en su estado inicial durante posteriores transferencias de control cuando:
La transferencia es el resultado de una transferencia implcita de control entre
instrucciones consecutivas que se encuentren en segmentos distintos (es decir,
cuando el control llega al segmento independiente desde el segmento fsicamente anterior).
La transferencia es el resultado de una transferencia implcita desde una instruccin SORT o MERGE en un segmento a un procedimiento de entrada
SORT o un procedimiento de salida SORT/MERGE dentro de un segmento
independiente.
Una transferencia explcita de control se lleva cabo desde una seccin con un
nmero de segmento distinto (como sucede, por ejemplo, durante la transferencia de control en una instruccin PERFORM n TIMES).
Un segmento independiente queda disponible en su ltimo estado de utilizacin
durante posteriores transferencias de control, cuando:
Exceptuando los dos tipos anteriores de transferencias implcitas, tiene lugar
una transferencia implcita desde una seccin con una prioridad diferente
(como, por ejemplo, cuando se devuelve control al segmento independiente
desde un procedimiento Declarativo).
Se obtiene como resultado una transferencia explcita desde una instruccin
EXIT PROGRAM o GOBACK.
Los segmentos independientes han de tener asignados nmeros de segmento del
50 al 99.

Lgica de segmentacin
En un programa segmentado, las secciones se clasifican por un sistema de
nmeros de segmento de acuerdo con los criterios siguientes:
Frecuencia de ReferenciaLas secciones ms utilizadas, o aqullas que han
de estar disponibles en todo momento como referencia, deben estar normalmente dentro de segmentos fijos permanentes. Las secciones que se utilizan con menor frecuencia pueden estar en segmentos fijos recubribles o en
segmentos independientes, segn la lgica del programa.
Frecuencia de UtilizacinCuanto mayor sea la frecuencia con la que se utilice
una seccin, menor ser su nmero de segmento; cuanto menor sea la frecuencia con la que se la referencie, mayor ser su nmero de segmento.
Relaciones LgicasA las secciones que se comunican ms frecuentemente
entre ellas habra que darles nmeros de segmento idnticos.

324

COBOL/400 Gua del usuario

Control de Segmentacin
Excepto para transferencias especficas de control, la secuencia lgica y la
secuencia fsica de instrucciones de programa son iguales. El compilador inserta
cualquier instruccin necesaria para inicializar un segmento. No es necesario
transferir control al principio de un segmento, o al principio de una seccin dentro
de un segmento. En su lugar, el control puede transferirse a cualquier prrafo en
la Divisin de Procedimientos.

Consideraciones sobre el Programa Fuente COBOL


Los elementos siguientes de un programa fuente COBOL implantan la caracterstica de segmentacin:
La clusula SEGMENT-LIMIT en el prrafo OBJECT-COMPUTER de la Divisin de Caractersticas de Entorno. Esta clusula sirve para controlar la especificacin de segmentos permanentes fijos y recubribles fijos.
Los nmeros de segmentos de la Divisin de Procedimientos que agrupan secciones en segmentos. El esquema de numeracin de segmentos permite
adems la especificacin de segmentos independientes, segmentos permanentes fijos, y (junto con la clusula SEGMENT-LIMIT) de segmentos recubribles fijos.

SegmentacinDivisin del Entorno


En el prrafo OBJECT-COMPUTER, la clusula SEGMENT-LIMIT permite que el
usuario vuelva a clasificar los segmentos permanentes fijos mientras se retienen
las propiedades de los segmentos de la parte fija para los segmentos vueltos a
clasificar.
Formato
55SEGMENT-LIMITnombr-segmento . 5%
IS

La clusula SEGMENT-LIMIT permite que el programador especifique ciertos segmentos permanentes como susceptibles de ser recubiertos por segmentos independientes, sin perder las propiedades lgicas de los segmentos de la parte fija.
El nmero-segmento debe ser un entero con un valor dentro del rango de 1 a 49.
Cuando se especifica la clusula SEGMENT-LIMIT:
Los segmentos permanentes fijos son los que poseen nmeros de segmento
del 0 hasta el nmero de segmento especificado pero sin incluirlo.
Los segmentos recubribles fijos son los que poseen nmeros de segmento
desde el nmero de segmento especificado hasta el 49.
Por ejemplo, si se especifica SEGMENT-LIMIT IS 25, las secciones con nmeros
de segmento del 0 al 24 son segmentos permanentes fijos, y las secciones con
nmeros de segmento del 25 al 49 son segmentos recubribles fijos.

Apndice A. Caractersticas de segmentacin

325

Cuando se omite la clusula SEGMENT-LIMIT, todas las secciones con nmeros


de segmento del 0 al 49 son segmentos permanentes fijos.

SegmentacinDivisin de Procedimientos
En la Divisin de Procedimientos de un programa segmentado, la clasificacin de
secciones se especifica mediante los nmeros de segmento en los encabezamientos de seccin. El nmero de segmento ha de ser un entero del 0 al 99.
Formato
55nomb-seccinSECTION.5%
nombr-segmento

Todas las secciones con el mismo nmero de segmento componen un segmento


de programa. No es necesario que dichas secciones sean contiguas en el programa fuente.
Los segmentos con nmeros de segmento del 0 al 49 estn en la parte fija del
programa. Slo es posible asignar estos nmeros a las secciones declarativas.
Los segmentos con nmeros de segmento del 50 al 99 son segmentos independientes. Si se omite el nmero de segmento del encabezamiento de la seccin, se
asume que el nmero de segmento es 0.

SegmentacinConsideraciones Especiales
Cuando se utiliza la segmentacin, existen una serie de restricciones en las instrucciones ALTER, PERFORM, SORT y MERGE. Tambin hay consideraciones
especiales para los programas de llamada y programas llamados.

Instruccin ALTER
No debe hacerse referencia a una instruccin GO TO en un segmento independiente por medio de una instruccin ALTER en un segmento distinto. Todas las
otras utilizaciones de la instruccin ALTER son vlidas y se realizan, incluso si la
instruccin GO TO a la que se haga referencia est en un segmento recubrible fijo.

Instruccin PERFORM
Una instruccin PERFORM en la parte fija puede tener en su rango, adems de
cualquier procedimiento Declarativo, cuya ejecucin tenga lugar dentro de ese
rango, slo uno de los elementos siguientes:
Secciones y/o prrafos en la parte fija
Secciones y/o prrafos dentro de un nico segmento independiente.
Una instruccin PERFORM en un segmento independiente puede tener dentro de
su rango, adems de los procedimientos Declarativos, cuyo proceso tenga lugar
dentro de ese rango, slo uno de los elementos siguientes:
Secciones y/o prrafos en la parte fija
Secciones y/o prrafos contenidos totalmente en el mismo segmento independiente que la instruccin PERFORM.

326

COBOL/400 Gua del usuario

Instrucciones SORT y MERGE


Si aparece una instruccin SORT o MERGE en la parte fija, cualquier procedimiento de entrada SORT o procedimiento de salida SORT/MERGE debe aparecer completamente en una de las siguientes ubicaciones:
La parte fija
Un nico segmento independiente.
Si aparece una instruccin SORT o MERGE dentro de un segmento independiente,
cualquier procedimiento de entrada SORT o procedimiento de salida
SORT/MERGE debe aparecer por completo dentro de una de las siguientes ubicaciones:
La parte fija
El mismo segmento independiente que la instruccin SORT o MERGE.

Programas Llamados y Programas de Llamada


La instruccin CALL puede aparecer en cualquier parte dentro de un programa
segmentado. Cuando una instruccin CALL aparece dentro de un segmento independiente, dicho segmento se encuentra en su ltimo estado de utilizacin cuando
se devuelve el control al programa de llamada.

Apndice A. Caractersticas de segmentacin

327

328

COBOL/400 Gua del usuario

Apndice B. Caractersticas de Depuracin


Las caractersticas de depuracin especifican las condiciones bajo las que los procedimientos se supervisarn durante el tiempo de ejecucin del programa.
Se proporcionan las instrucciones de depuracin del lenguaje fuente COBOL. El
usuario debe decidir qu supervisar, as como la informacin que necesita recuperar a propsito de la depuracin. Las caractersticas de depuracin COBOL permiten simplemente acceder a la informacin pertinente.

Depuracin del Lenguaje Fuente COBOL


Los elementos del lenguaje COBOL que implantan las cractersticas de depuracin
son un conmutador en tiempo de compilacin (WITH DEBUGGING MODE), un
conmutador en tiempo de ejecucin, una sentencia declarativa USE FOR
DEBUGGING, el registro especial DEBUG-ITEM y las lneas de depuracin que
pueden escribirse en las Divisiones de Caractersticas de Entorno, Datos y Procedimientos.

Conmutador de Tiempo de Compilacin


En el prrafo SOURCE-COMPUTER de la Seccin de Configuracin, la clusula
WITH DEBUGGING MODE acta como un conmutador en tiempo de compilacin.
Formato
55SOURCE-COMPUTER..5%
nombr-sistema
DEBUGGING MODE
WITH

La clusula WITH DEBUGGING MODE ejerce como conmutador en tiempo de


compilacin para las instrucciones de depuracin escritas en el programa fuente.
Cuando se especifica WITH DEBUGGING MODE, todas las secciones y lneas de
depuracin se compilan tal como se especifica en este apndice. Cuando se omite
WITH DEBUGGING MODE, todas las secciones y lneas de depuracin se tratan
como documentacin.

Copyright IBM Corp. 1994

329

Conmutador en Tiempo de Ejecucin


El conmutador en tiempo de ejecucin activa dinmicamente el cdigo de depuracin que se genera cuando se especifica WITH DEBUGGING MODE.
Existen dos mandatos para controlar el conmutador en tiempo de ejecucin. Para
activar el conmutador en tiempo de ejecucin, introduzca el mandato:
STRCBLDBG
y pulse F4.
Se visualiza la siguiente pantalla:

Iniciar Depuracin COBOL (STRCBLDBG)

Escriba la eleccin, pulse Intro.


Programa . . . . . . . . . . . .
Biblioteca.. . . . . . . . . .

F3=Salir F4=Solicitud
F24=Ms teclas

F5=Renovar

\LIBL

Nombre
Nombre, \LIBL, \CURLIB

F12=Cancelar

Final
F13=Cmo util. esta pantalla

El siguiente diagrama muestra la sintaxis del mandato STRCBLDBG:

55STRCBLDBG5%
PGM(nombre-prgm.)
\LIBL/
\CURLIB/
nombre-bibl./

Job: B,I Pgm: B,I REXX: B,I Exec

Figura 107. Sintaxis del mandato STRCBLDBG

Se permite utilizar este mandato tanto en procesos interactivos y por lotes como en
programas CL.
Interfaz de Programacin de Uso General
Se puede utilizar este mandato en QCMDEXC.
Fin de Interfaz de Programacin de Uso General

330

COBOL/400 Gua del usuario

Para desactivar el conmutador en tiempo de ejecucin, introduzca el mandato:


ENDCBLDBG
y pulse F4.
Se visualiza el siguiente mandato:

Final Depuracin COBOL (ENDCBLDBG)

Escriba la eleccin, pulse Intro.


Programa . . . . . . . . . . . .
Biblioteca.. . . . . . . . . .

F3=Salir F4=Solicitud
F24=Ms teclas

F5=Renovar

Nombre
Nombre, \LIBL, \CURLIB

\LIBL

F12=Cancelar

Final
F13=Cmo util. esta pantalla

EL siguiente diagrama muestra la sintaxis del mandato ENDCBLDBG:

55ENDCBLDBG 5%
PGM( nombre-prgm.)
\LIBL/
\CURLIB/
nombre-bibl./

Job: B,I Pgm: B,I REXX: B,I Exec

Figura 108. Sintaxis del mandato ENDCBLDBG

Se permite utilizar este mandato tanto en procesos interactivos y por lotes como en
programas CL.
Interfaz de Programacin de Uso General
Se puede utilizar este mandato en QCMDEXC.
Fin de Interfaz de Programacin de Uso General
El valor por omisin para el conmutador en tiempo de ejecucin se desactiva.

Apndice B. Caractersticas de Depuracin

331

Cuando se especifica la modalidad de depuracin mediante el conmutador en


tiempo de ejecucin, se activan todas las secciones y lneas de depuracin (D en
la columna 7) compiladas en el programa.
Es necesario introducir el mandato STRCBLDBG para cada programa COBOL
(programa principal o programa llamado) que se deba depurar en la prxima
unidad de ejecucin COBOL. Al final de la unidad de ejecucin, todos los conmutadores en tiempo de ejecucin que estn activos, es desactivado. Si ha de desactivar un conmutador antes de arrancar una unidad de ejecucin COBOL, utilice el
mandato ENDCBLDBG. Los conmutadores en tiempo de ejecucin pueden estar
activos a la vez hasta para 15 programas.
Cuando se emiten los mandatos STRCBLDBG o ENDCBLDBG en un programa
CL, las expresiones de concatenacin pueden utilizarse para todos los valores de
parmetros. Consulte la publicacin CL Gua del Programador para obtener ms
informacin acerca de las expresiones de concatenacin.
Cuando se suprime la modalidad de depuracin, mediante el conmutador en
tiempo de ejecucin, se inahabilita cualquier procedimiento Declarativo USE FOR
DEBUGGING. Todas las lneas de depuracin (D en la columna 7) permanecen
en vigor.
No es necesaria la recompilacin del programa fuente para activar o desactivar el
conmutador en tiempo de ejecucin.
Cuando no se especifica WITH DEBUGGING MODE en el prrafo
SOURCE-COMPUTER, el conmutador en tiempo de ejecucin no tiene ningn
efecto en la ejecucin del programa.

Sentencia Declarativa USE FOR DEBUGGING


La sentencia USE FOR DEBUGGING en la Divisin de Procedimientos identifica
los tems del programa fuente que se visualizan mediante el procedimiento declarativo de depuracin asociado.
Formato

55USEDEBUGGINGidentific.-15%
FOR
ON ALL

REFERENCES OF

nomb-arch-1
nombre-proced.-1
ALL PROCEDURES

El Identificador-1 no puede modificarse para su consulta.


Cuando se especifican, todas las secciones de depuracin deben escribirse inmediatamente despus del encabezamiento DECLARATIVES. Excepto para la sentencia USE FOR DEBUGGING, no debe haber ninguna referencia dentro del
procedimiento de depuracin a ningn procedimiento que no sea declarativo.

332

COBOL/400 Gua del usuario

Observe que la declarativa USE FOR DEBUGGING provoca que se ignoren todas
las instrucciones subsiguientes hasta llegar a una instruccin USE AFTER
EXCEPTION/ERROR vlida o a un delimitador END DECLARATIVES. Es posible
que programas enteros se omitan por esta razn.
La aparicin de una instruccin en una seccin de depuracin no provoca la ejecucin automtica de dicha seccin.
Una seccin de depuracin para un operando especfico se procesa una sola vez
como resultado de la ejecucin de una nica instruccin, sin importar cuntas
veces se especifica el operando en la instruccin. Una excepcin a esta regla es
que cada especificacin de un identificador subindexado o indexado en la que los
subndices o ndices sean distintos, provoca la invocacin de la Declarativa de
depuracin. Para una instruccin PERFORM que cause la ejecucin repetida de
un procedimiento, cualquier nombre del procedimiento asociado a una seccin
Declarativa de depuracin, se ejecuta una vez por cada ejecucin del procedimiento.
A efectos de depuracin, cada aparicin por separado de un verbo imperativo
dentro de una instruccin imperativa comienza una instruccin distinta.
Las instrucciones que aparecen fuera de las secciones de depuracin no deben
hacer referencia a los nombres de procedimientos definidos dentro de las secciones de depuracin.
Excepto para la propia sentencia USE FOR DEBUGGING, las instrucciones dentro
de una seccin Declarativa de depuracin slo puede hacer referencia a nombres
de procedimientos definidos en un procedimiento USE distinto mediante la instruccin PERFORM. Los nombres de Procedimientos dentro de las secciones Declarativas de depuracin no deben aparecer en las sentencias USE FOR
DEBUGGING.
En la Tabla 7 se definen los puntos en los que se ejecutan los procedimientos
USE FOR DEBUGGING durante el tiempo de ejecucin. El identificador-n, el
nombre de archivo-n y el nombre de procedimiento-n hacen referencia a la primera
y a todas las especificaciones posteriores de ese tipo de operando en una sentencia USE FOR DEBUGGING. Cualquier identificador, nombre de archivo, o
nombre de procedimiento en particular puede aparecer en una sola sentencia USE
FOR DEBUGGING, y slo una vez en esa sentencia.
Un identificador en una sentencia USE FOR DEBUGGING:
Debe especificarse sin la subindexacin o la indexacin necesaria normalmente si contiene una clusula OCCURS o est subordinada a una entrada
que contenga una clusula OCCURS. (Una instruccin SEARCH o SEARCH
ALL que haga referencia a uno de esos identificadores, no invoca a los procedimientos USE FOR DEBUGGING.)
No debe ser un registro especial.
Cuando se especifica ALL PROCEDURES en una sentencia USE FOR
DEBUGGING, no deben especificarse el nombre de procedimiento-1, el nombre de
procedimiento-2, el nombre de procedimiento-3, etc., en ninguna sentencia USE
FOR DEBUGGING. La frase ALL PROCEDURES slo puede especificarse una
vez en un programa.

Apndice B. Caractersticas de Depuracin

333

Cuando se utiliza una operando USE FOR DEBUGGING como calificador, dicha
referencia en el programa no activa los procedimientos de depuracin.
Las referencias al registro especial DEBUG-ITEM slo se pueden realizar desde
dentro de un procedimiento Declarativo de depuracin.
Tabla 7. Ejecucin de las Declarativas de Depuracin
Operando USE FOR
DEBUGGING

Los procedimientos USE FOR DEBUGGING se ejecutan


despus de lo siguiente:

identificador-n

Antes de REWRITE/WRITE identificador-n y despus del


movimiento de la frase FROM, si es aplicable.
Despus de cada inicializacin, modificacin, o
evaluacin del identificador-n en
PERFORM/VARYING/AFTER/UNTIL identificador-n.
Despus de cualquier otra instruccin COBOL que
haga referencia explcitamente al identificador-n y pudiera
cambiar su contenido. (Vase nota adjunta).

ALL REFERENCES OF
identificador-n

Antes de GO TO DEPENDING ON identificador-n, se transfiere


el control, y antes de que se ejecute ninguna seccin de
depuracin asociada para el nombre de procedimiento.
Antes REWRITE/WRITE identificador-n y del movimiento
de la frase FROM, si es aplicable.
Despus de cada inicializacin, modificacin o
evaluacin del identificador-n en
PERFORM/VARYING/AFTER/UNTIL identificador-n.
Despus de cualquier otra instruccin COBOL que se
refiera explcitamente al identificador-n. (Vase nota adjunta).

nombre-archivo-n

Despus de CLOSE/DELETE/OPEN/START nombre-archivo-n


Despus de READ nombre-archivo-n en el que no se ejecut
AT END/INVALID KEY.

nombre-procedimiento-n

Antes de cada ejecucin del procedimiento nombrado.


Despus de la ejecucin de la instruccin ALTER que haga
referencia al procedimiento nombrado.

ALL PROCEDURES

Antes de cada ejecucin de todos los procedimientos de


no depuracin.
Despus de la ejecucin de toda instruccin ALTER (excepto
las instrucciones ALTER en los procedimientos Declarativos).

Nota: Los operandos sobre los que acte pero no se nombren explcitamente en
las instrucciones tales como ADD, MOVE, o SUBTRACT
CORRESPONDING nunca causan la activacin de un procedimiento USE
FOR DEBUGGING cuando se ejecutan dichas instrucciones. Si se especifica el identificador-n en una frase que no se procesa, no se ejecuta la
seccin de depuracin asociada.

334

COBOL/400 Gua del usuario

Registro Especial DEBUG-ITEM


El registro especial DEBUG-ITEM proporciona informacin para un procedimiento
Declarativo de depuracin. DEBUG-ITEM tiene la descripcin implcita siguiente:

1 DEBUG-ITEM.
2 DEBUG-LINE
2 FILLER
2 DEBUG-NAME
2 FILLER
2 DEBUG-SUB-1
2 FILLER
2 DEBUG-SUB-2
2 FILLER
2 DEBUG-SUB-3
2 FILLER
2 DEBUG-CONTENTS

PICTURE
PICTURE
PICTURE
PICTURE
PICTURE
LEADING
PICTURE
PICTURE
LEADING
PICTURE
PICTURE
LEADING
PICTURE
PICTURE

IS X(6).
IS X VALUE SPACE.
IS X(3).
IS X VALUE SPACE.
IS S9999 SIGN IS
SEPARATE CHARACTER.
IS X VALUE SPACE.
IS S9999 SIGN IS
SEPARATE CHARACTER.
IS X VALUE SPACE.
IS S9999 SIGN IS
SEPARATE CHARACTER.
IS X VALUE SPACE.
IS X(n).

El registro especial DEBUG-ITEM proporciona informacin acerca de las condiciones que provocan la ejecucin de una seccin de depuracin.
Antes de que se procese cada seccin de depuracin, DEBUG-ITEM se llena de
espacios. El contenido de los subcampos DEBUG-ITEM se actualiza segn las
reglas que rige la instruccin MOVE, con una excepcin: DEBUG-CONTENTS se
actualiza como si el movimiento fuera un movimiento alfanumrico a alfanumrico
sin conversin de datos desde una forma de representacin interna a otra.
Despus de la actualizacin, cada campo contiene:
DEBUG-LINE: El nmero de instruccin generado por el compilador, ajustado
a la derecha y rellenado con ceros por la izquierda. Por ejemplo, 000112.
DEBUG-NAME: Los primeros 30 caracteres del nombre causante de la ejecucin de la seccin de depuracin. Todos los calificadores se separan mediante
la palabra OF (no se introducen subndices o ndices en DEBUG-NAME).
DEBUG-SUB-1, DEBUG-SUB-2, DEBUG-SUB-3: Si DEBUG-NAME est
subindexado o indexado, el nmero de aparicin de cada nivel se introduce en
el DEBUG-SUB-n correspondiente. Si el artculo no est subindexado o
indexado, estos campos permanecen con espacios en blanco.
DEBUG-CONTENTS: Los datos se mueven a DEBUG-CONTENTS tal como
se muestra en la Tabla 8. DEBUG-CONTENTS tiene el mismo tamao que el
identificador ms grande del programa.

Apndice B. Caractersticas de Depuracin

335

Tabla 8. Contenido del Subcampo DEBUG-ITEM

tem que causa la


ejecucin
de la seccin de
depuracin

DEBUG-LINE
Contiene el nmero
de la instruccin
COBOL
que hace referencia
a

identificador-n

Contenido de
DEBUG-NAME

Contenido de
DEBUG-CONTENTS

identificador-n

identificador-n

Contenido del identificador-n


cuando el control se transfiere
a la seccin de depuracin.

nombre-archivo-n

nombre-archivo-n

nombre-archivo-n

Para READ: contenido del


registro recuperado. Otras referencias: espacios.

nombreprocedimiento-n referencia ALTER

instruccin ALTER

nombreprocedimiento-n

nombre-procedimiento-n en la
frase TO PROCEED TO

GO TO nombreprocedimiento-n

instruccin GO TO

nombreprocedimiento-n

nombreprocedimiento-n en
SORT/MERGE
INPUT/OUTPUT
PROCEDURE

instruccin
SORT/MERGE

nombreprocedimiento-n

SORT INPUT SORT


OUTPUT MERGE OUTPUT
segn sea aplicable

Transferencia de
control de la instruccin PERFORM

Esta instruccin
PERFORM

nombreprocedimiento-n

PERFORM LOOP

nombreprocedimiento en un
procedimiento USE

Instruccin causante
de la ejecucin del
procedimiento USE

nombreprocedimiento-n

USE PROCEDURE

Transferencia implcita desde el procedimiento secuencial


anterior

Instruccin anterior
procesada en un procedimiento secuencial
previo (vase nota
adjunta)

nombreprocedimiento-n

FALL THROUGH

Primera entrada en el
primer procedimiento
no declarativo

Nmero de lnea de
la primera instruccin
del procedimiento

Primer nombre de
procedimiento no
declarativo

START PROGRAM

Nota: Si este prrafo est precedido de un encabezamiento de seccin y el


control se pasa al encabezamiento de seccin, el numero de instruccin
hace referencia al encabezamiento de seccin.

336

COBOL/400 Gua del usuario

Lneas de depuracin
Las lneas de depuracin pueden ayudar a determinar la causa de un error. Una
lnea de depuracin es cualquier lnea en un programa fuente con una D codificada
en la columna 7 (el rea de continuacin). Si una lnea de depuracin slo contiene espacios en blanco en el rea A y B, se considera una lnea en blanco.
Cada lnea de depuracin debe escribirse de tal forma que el resultado sea un
programa sintcticamente correcto, ya sea mediante la compilacin de las lneas
de depuracin o mediante una correccin sintctica, aunque se traten como documentacin.
Se permiten lneas de depuracin sucesivas. Las lneas de depuracin pueden
continuarse. Sin embargo, cada lnea de continuacin debe contener una D en la
columna 7, y la serie de caracteres no debe partirse en dos lneas.
Las lneas de depuracin slo pueden especificarse despus del prrafo
OBJECT-COMPUTER.
Cuando se especifica la clusula WITH DEBUGGING MODE en el prrafo
SOURCE-COMPUTER, se compilan todas las lneas de depuracin como parte del
programa objeto.
Cuando se omite la clusula WITH DEBUGGING MODE, se comprueba la sintaxis
de las lneas de depuracin, pero se tratan como documentacin.

Apndice B. Caractersticas de Depuracin

337

338

COBOL/400 Gua del usuario

Apndice C. Nivel de Soporte del Lenguaje


Estndar ANSI X3.23-1985 COBOL
El estndar ANSI X3.23-1985 COBOL est compuesto por once mdulos de
proceso funcional, siete de los cuales son imprescindibles y cuatro opcionales.
Los siete mdulos necesarios son: Ncleo, E-S Secuencial, E-S Relativa, E-S
Indexada, Comunicacin Entre Programas, Clasificacin Fusin y Manipulacin de
Texto Fuente. Los cuatro mdulos opcionales son: Transcriptor de Informes,
Comunicaciones, Depuracin y Segmentacin.
Los elementos del lenguaje dentro de los mdulos pueden clasificarse como elementos del nivel 1 y elementos de nivel 2. Los elementos de nueve de los
mdulos se dividen en elementos del nivel 1 y elementos del nivel 2. Dos de los
mdulos (SORT-MERGE y REPORT WRITER) slo contienen elementos del nivel
1. Por ejemplo, los elementos del nivel 1 del Ncleo realizan operaciones internas
bsicas. Los elementos del nivel 2 del Ncleo proporcionan elementos para procesos internos ms amplios y sofisticados.
Los tres subconjuntos del COBOL Estndar son el subconjunto superior, el
subconjunto intermedio y el subconjunto inferior. Cada subconjunto est compuesto por un nivel de los siete mdulos necesarios: Ncleo, E-S Secuencial, E-S
Relativa, E-S Indexada, Comunicacin Entre Programas, Clasificacin Fusin, y
Manipulacin de Texto Fuente. Los cuatro mdulos opcionales (Transcriptor de
Informes, Comunicaciones, Depuracin y Segmentacin) no son necesarios en los
tres subconjuntos del COBOL Estndar.
El subconjunto superior est compuesto por todos los elementos del lenguaje
del nivel superior de los mdulos necesarios. Es decir:
Los elementos del nivel 2 del Ncleo, E-S Secuencial, E-S Relativa, E-S
Secuencial, Comunicacin Entre Programas, y Manipulacin del Texto
Fuente
Los elementos del nivel 1 de la Clasificacin-Fusin.
El subconjunto intermedio est compuesto por todos los elementos de lenguaje
del nivel 1 de todos los mdulos necesarios. Es decir:
Los elementos del nivel 1 del Ncleo, E-S Secuencial, E-S Relativa, E-S
Indexada, Comunicacin entre Programas, y Manipulacin del Texto
Fuente.
El subconjunto inferior se compone de todos los elementos del lenguaje de
nivel 1 de los mdulos del Ncleo, E-S Secuencial, y Comunicacin Entre Programas.
Los cuatro mdulos opcionales no son parte integral de ninguno de los
subconjuntos. Sin embargo, ninguna, todas o cualquier combinacin de los
mdulos opcionales puede asociarse con cualquier subconjunto.

Copyright IBM Corp. 1994

339

Nivel de Soporte del Lenguaje COBOL/400


El compilador COBOL/400 proporciona soporte para:
El nivel 1 de los mdulos del Ncleo, E-S Secuencial, E-S Relativa, E-S
Indexada, Comunicacin Entre Programas, Clasificacin Fusin y Manipulacin
de Texto Fuente
El nivel 2 de los mdulos de Depuracin y Segmentacin.
El compilador COBOL/400 no proporciona soporte para los mdulos del
Transcriptor de Informes y Comunicaciones de ANSI X3.23-1985 COBOL.
El nivel de soporte proporcionado por el compilador COBOL/400 se representa en
la tabla inferior. La siguiente tabla:
Muestra el nivel de soporte del compilador COBOL/400 para cada mdulo de
proceso funcional del Estndar ANSI X3.23-1985 COBOL
Describe cada mdulo.
Seguidamente se da una explicacin de la notacin utilizada en la tabla:
Un cdigo de tres caracteres que
identifica el mdulo. En este ejemplo se
explica el mdulo de
Segmentacin.

&

El nivel de este mdulo soportado por


el compilador COBOL/4. En este
ejemplo, se proporciona soporte para
el ms alto de los dos niveles del
mdulo de Segmentacin.

SEG

,2

&

El rango de niveles de soporte


definido por el estndar
ANSI X3.23-1985 COBOL. Un nivel de significa
que un estndar COBOL mnimo no
necesita soportar este mdulo para ajustarse
al estndar.

Tabla 9 (Pgina 1 de 2). Nivel de Soporte del Compilador COBOL/400


COBOL/400
Nivel de
Lenguaje
Soportado

340

Descripcin del Mdulo

Ncleo
1 NUC 1,2

Contiene los elementos del lenguaje necesarios para procesar los


datos internamente dentro de las cuatro divisiones bsicas de un
programa y la posibilidad para la definicin y acceso de tablas.

E-S Secuencial
1 SEQ 1,2

Proporciona acceso a los registros de los archivos mediante la


secuencia establecida en que se grabaron los registros en el
archivo.

E-S Relativa
1 REL 0,2

Proporciona acceso a registros de manera secuencial o al azar.


Cada registro se identifica nicamente mediante un entero que
representa la posicin lgica del registro dentro del archivo.

COBOL/400 Gua del usuario

Tabla 9 (Pgina 2 de 2). Nivel de Soporte del Compilador COBOL/400


COBOL/400
Nivel de
Lenguaje
Soportado

Descripcin del Mdulo

E-S Indexada
1 INX 0,2

Proporciona acceso a registros de manera secuencial o al azar.


Cada registro dentro de un archivo indexado se identifica
mediante una clave de registro.

Comunicacin
Entre programas
1 IPC 1,2

Permite que un programa COBOL comunique con otros programas mediante transferencias de control y acceso a elementos
de datos comunes.

Clasificacin-Fusin
1 SRT 0,1

Ordena uno o ms archivos de registros, o combina dos o ms


archivos ordenados de forma idntica de acuerdo con las claves
especificadas por el usuario.

Manipulacin del
Texto Fuente
1 STM 0,2

Permite insertar texto COBOL predefinido dentro de un programa


en tiempo de ejecucin.

Transcriptor
de informes
0 RPW 0,1

Proporciona una produccin semiautomtica de informes


impresos.

Comunicaciones
0 COM 0,2

Permite acceder, procesar, y crear mensajes o partes de mensajes; tambin permite la comunicacin entre un Sistema de
Control de Mensajes con dispositivos de comunicaciones locales
y remotos.

Depuracin
2 DEB 0,2

Permite especificar instrucciones y procedimientos para la depuracin.

Segmentacin
2 SEG 0,2

Proporciona el solapamiento en tiempo de objeto de secciones de


la Divisin de Procedimientos.

Soporte SAA de la Interfaz de Programacin Comn (CPI)


El archivo fuente QILBINC en las bibliotecas de productos QLBL y QLBLP contiene
los miembros que mantienen las especificaciones para mltiples Interfaces de Programacin Comn SAA. Estas especificaciones describen las interfaces de parmetros. Este archivo es propiedad de IBM y no debe sufrir ninguna modificacin.
Si desea personalizar cualquier especificacin, debe copiar cualquier miembro que
desee modificar en un archivo fuente de una de las bibliotecas. Puede utilizar el
mandato Copiar Archivo (CPYF) para efectuar esta tarea. Para obtener ms informacin acerca del mandato CPYF, consulte la publicacin CL Reference.
Si copia estas especificaciones en la biblioteca, debe renovar las copias cuando
cuando se instale una release nueva del producto, o cuando se efecte cualquier
modificacin utilizando un Arreglo Temporal de Programa (PTF). IBM proporciona
el mantenimiento para estas especificaciones slo en las bibliotecas en las que
est distribuido.

Apndice C. Soporte del Lenguaje

341

342

COBOL/400 Gua del usuario

Apndice D. Mensajes COBOL/400, Sealizador FIPS y


Sealizacin SAA

Mensajes COBOL/400
Este apndice proporciona una descripcin general de los mensajes que IBM suministra con el programa bajo licencia COBOL/400.

Mensajes Interactivos
En un entorno interactivo, los mensajes se visualizan en la pantalla de la estacin
de trabajo. Pueden aparecer en la pantalla actual como resultado de la ejecucin
del programa o como respuesta a las entradas introducidas desde la lnea de mandatos, mens, pantalla de entrada de mandatos o Herramientas para el Desarrollo
de Aplicaciones (Appl Dev Tools). Los mensajes tambin pueden aparecer si se
solicitan mediante un mandato de visualizacin o de una opcin del men.
Los mensajes para el programa bajo licencia COBOL/400 empiezan con un prefijo
LSC, LBE, o LBL.
El comprobador de sintaxis COBOL/400 emite los mensajes LSC cuando se utiliza
el Programa de Utilidad de Entrada Fuente (SEU) para introducir el fuente
COBOL/400. Por ejemplo, se visualiza la pantalla siguiente despus de introducir
incorrectamente el nombre del programa en el prrafo PROGRAM-ID.

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 F4=Solicitar F5=Renovar F9=Recuperar F1=Cursor


F16=Repetir bsqueda F17=Repetir cambio
F24=Ms teclas
# no est en el juego de caracteres COBOL. Lnea rechazada

Figura 109. Ejemplo de un Mensaje del Comprobador de Sintaxis COBOL/400.

Copyright IBM Corp. 1994

343

Los mensajes LBE proporcionan informacin adicional acerca de la operacin del


sistema durante el tiempo de ejecucin. Por ejemplo, puede visualizar la pantalla
siguiente si comete un error en tiempo de ejecucin:

Visualizar Mensajes del Programa


Trabajo 11111/PGMRS/E34 iniciado el 3/4/9 a las 14:35:2 en el
subsistema QINTER en el Mensaje CPF411 en XMPLDUMP en COBOLEX (C D F G).

Escriba respuesta, pulse Intro.


Respuesta ... _______________________________________________________________
________________________________________________________________________________
F3=Salir

F12=Cancelar

Figura 110. Mensaje de Error en Tiempo de Ejecucin

Si desplaza el cursor hasta la lnea en la que aparece el nmero de mensaje


CPF4101 y pulsa la tecla AYUDA o F1, la informacin del mensale LBE se
visualiza tal como se muestra a continuacin:

Informacin de Mensaje Adicional


ID de mensaje . .
Tipo de mensaje .
Fecha envo . . .
Desde programa ..
A programa . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

:
:
:
:
:

LBE72
INQUIRY
3/4/9
QLREXHAN
\EXT

Gravedad . . . . . . :

99

Hora envo . . . . . :
Instruccin . . . . :
Instruccin . . . . :

14:37:15

Mensaje . . . . :
Mensaje CPF411 en XMPLDUMP en COBOLEX (C D F).
Causa . . . . . :
Se detect el mensaje CPF411 en la instruccin COBOL. OPEN
(instruccin MI 7E) en programa XMPLDUMP en COBOLEX.
Recuperacin. . :
Entre una G para continuar el programa en el siguiente
instruccin MI, o C si no desea vuelco, una D si desea vuelco de los
identificadores COBOL o una F si desea volcar los identificadores COBOL
y las variable generadas por el compilador. El texto de mensaje para CPF411
es el siguiente: archivo SALES en biblioteca \LIBL no encontrado o archivo
de datos en lnea perdido.
Elecciones posibles de respuesta al mensaje. . . . . . . . . . . . . :
C -- No se produce ningn vuelco con formato
D -- Se produce un vuelco de los identificadores COBOL
F -- Se produce un vuelco de todas las variables
G -- Para continuar el programa en la siguiente instruccin MI.
Final
Pulse Intro para continuar.
F3=Salir

F1=Visualizar mensajes en anotaciones de trabajo

F12=Cancelar

Figura 111. Mensaje de Error en Tiempo de EjecucinTexto de Segundo Nivel

Los mensajes LBE 7900 a 7999 se utilizan como encabezamientos para la informacin impresa durante un vuelco con formato COBOL/400.

344

COBOL/400 Gua del usuario

Los mensajes LBL se describen en el apartado Mensajes de Compilacin que se


muestra a continuacin.
El apartado Respuesta a Mensajes en la pgina 345 explica cmo visualizar el
texto de mensaje de segundo nivel y cmo contestar los mensajes.

Mensajes de Compilacin
Los mensajes LBL se imprimen en el listado del programa cuando se detectan
errores durante la compilacin del programa. Los mensajes LBL incluyen el
mensaje emitido cuando se solicita la sealizacin de Federal Information
Processing Standard (FIPS); para obtener ms informacin acerca de los mensajes
FIPS, vea la pgina 347 de este apndice.

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 ubicacin del error y el resumen de los mensajes.
Para obtener ms informacin acerca de los Listados de Programas, consulte el
apartado Listado Fuente en la pgina 42.

Respuestas a Mensajes
En un entorno interactivo, se indica un mensaje mediante una o varias de las condiciones siguientes:
Un mensaje escueto (llamado texto de primer nivel) en la lnea de mensajes
Una imagen invertida resaltando el campo de entrada con error
Un teclado bloqueado
El sonido de una alarma (si se instal la opcin de alarma).
Los siguiente prrafos describen brevemente algunos mtodos de respuestas a
mensajes de error; hay ms informacin disponible en la publicaciones Gua para
Nuevos Usuarios y Herramientas para el Desarrollo de Aplicaciones.
Si la correccin necesaria es obvia desde la pantalla inicial, puede pulsar la tecla
Restaurar Error (si el teclado est bloqueado), introduzca la informacin correcta y
contine el trabajo.
Si el mensaje indica que debe elegir una respuesta (como por ejemplo C para cancelar, D para volcar los identificadores COBOL, F para volcar todas las variables, o
G para reanudar el proceso en la siguiente instruccin COBOL), las opciones de
respuesta se muestran entre parntesis en el texto de mensaje de primer nivel.
Para ver un ejemplo, consulte la Figura 110 en la pgina 344.
Si la informacin en la pantalla de informacin inicial no ofrece los suficientes datos
para manejar el error, puede pulsar la tecla AYUDA (despus de colocar el cursor
en la lnea de mensajes, si es necesario) para obtener una pantalla de segundo
nivel con informacin adicional que permite solucionar este error. Para volver a la
pantalla inicial, pulse la tecla Intro; luego pulse la tecla Restaurar Error (si el
teclado est bloqueado) y efecte la correccin o respuesta.

Apndice D. Mensajes COBOL/400

345

Si el error se produce cuando compila o ejecuta un programa, puede que necesite


modificar las instrucciones fuente COBOL/400 o los mandatos de lenguaje de
control (CL). Consulte la publicacin SEU Gua del Usuario y Manual de Consulta
para obtener informacin sobre cmo modificar las instrucciones.

Descripciones de Mensajes COBOL


Los mensajes para el programa bajo licencia COBOL/400 empiezan con los prefijos LSC, LBE o LBL.
El comprobador de sintaxis emite los mensajes LSC cuando se utiliza el SEU
para introducir la fuente COBOL.
Los mensajes LBE proporcionan informacin adicional acerca de la operacin
del sistema durante el tiempo de ejecucin.
Los mensajes LBL son mensajes generados por el compilador.
Los nmeros de mensajes se asignan de la siguiente forma:
Mensaje de Error

Descripcin

LBE7000 al LBE7199
LBE7200 al LBE7999
LBE9001
LBL0000 al LBL0999
LBL1000 al LBL1999

Mensajes de Escape
Mensajes en Tiempo de Ejecucin
Mensaje de Escape
Mensajes con gravedad menor a 30
Mensajes con gravedad superior o igual a
30
Mensajes de Sealizador FIPS
Mensajes de Sealizacin SAA
Mensajes del controlador de sintaxis

LBL8000 al LBL8799
LBL8800 al LBL8899
LSC0000 al LSC1999

Niveles de Gravedad
El programa bajo licencia COBOL/400 proporciona los siguientes niveles de gravedad de mensajes:
Gravedad Significado

346

00

Informativo: Este nivel se utiliza para comunicar informacin al


usuario. No se ha producido ningn error. Los mensajes informativos slo se listan cuando se especifica la opcin FLAG (00).

10

Aviso: Este nivel indica que se ha detectado un error pero no es lo


suficientemente grave como para interrumpir la ejecucin del programa.

20

Error: Este nivel indica que se ha producido un error, pero el compilador est efectuando una operacin que podra producir el cdigo
deseado.

30

Error Grave: Este nivel indica que se ha detectado un error grave.


La compilacin ha finalizado, pero el programa no se puede ejecutar.

40

Irrecuperable: Este nivel indica generalmente un error del usuario


que provoca la finalizacin del proceso.

50

Irrecuperable: Este nivel indica generalmente un error del compilador que provoca la finalizacin del proceso.

COBOL/400 Gua del usuario

99

Accin: Se requiere alguna accin manual, como por ejemplo introducir una respuesta, cambiar los formularios de impresora o sustituir
los disquetes.

Nota: Los mensajes 00, 10 y 20 se suprimen cuando se utiliza la opcin


FLAG(30) de la instruccin PROCESS o cuando el mandato CRTCBLPGM
especifica FLAG(30) y la instruccin PROCESS no lo altera temporalmente.
Consulte el apartado Uso de la Instruccin PROCESS para Especificar las
Opciones del Compilador en la pgina 33 para ms informacin.
El compilador siempre intenta proporcionar diagnsticos completos de todos los
textos fuente en el programa, incluso cuando se han detectado errores. Si el compilador no puede continuar en una instruccin determinada, el mensaje establece
que el compilador no puede continuar y que el resto de la informacin se omitir.
Cuando se produce este error, el programador debe examinar la instruccin entera.
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 ejecucin lo hacen en el
archivo QLBLMSGE.
El programa que enva el mensaje, no la descripcin del mensaje almacenada en
el archivo de mensajes, es el que determina las variables de sustitucin y los
valores de respuesta vlida. Sin embargo, pueden cambiarse ciertos elementos de
una descripcin de mensajes: por ejemplo, el texto, el nivel de gravedad, la respuesta por omisin o el listado del vuelco. Para ello, es preciso especificar otra
definicin de mensaje mediante el mandato Aadir Descripcin de Mensaje
(ADDMSGD), colocar la descripcin modificada en un archivo de mensajes creado
por el usuario, y especificar1 dicho archivo en el mandato Alterar Temporalmente
Archivo de Mensajes (OVRMSGF). El mandato OVRMSGF sirve para que el compilador recupere mensajes del archivo especificado. Consulte los mandatos
ADDMSGD y OVRMSGF en la publicacin CL Reference si desea obtener informacin adicional.

ATENCIN: La sustitucin temporal de un mensaje suministrado por IBM con un


mensaje creado por el usuario puede provocar resultados imprevisibles. Si no se
retienen los valores de respuesta, el programa puede que no responda a ninguna
respuesta. Cambiar las respuestas por omisin en los mensajes de tipo *NOTIFY
puede afectar la ejecucin del programa en modalidad desatendida. Cambiar la
gravedad puede provocar la cancelacin de un trabajo que no estuviera cancelado.
Tenga cuidado al alterar los mensajes suministrados por IBM por mensajes
creados por el usuario.

El sealizador Federal Information Processing Standard (FIPS)


El sealizador FIPS puede especificarse para supervisar un subconjunto FIPS
COBOL, cualquier mdulo opcional, todos los elementos de lenguaje obsoleto, o
bien una combinacin de un subconjunto FIPS COBOL, de mdulos opcionales y
de todos los elementos obsoletos.

Si es preciso modificar y sustituir un mensaje suministrado por IBM en su archivo de mensajes, pngase en contacto con su
representante de servicio.
Apndice D. Mensajes COBOL/400

347

La supervisin es un anlisis que compara la sintaxis utilizada en el programa


fuente con la sintaxis incluida en el subconjunto FIPS seleccionado por el usuario y
los mdulos opcionales. Se identifica cualquier sintaxis utilizada en el programa
fuente que no se ajuste al subconjunto FIPS COBOL seleccionado y los mdulos
opcionales. Cualquier sintaxis para un elemento de lenguaje obsoleto utilizada en
el programa fuente tambin se identificar (segn el compilador escogido). Consulte la pgina 25 para obtener ms informacin acerca de los parmetros para la
sealizacin FIPS.
Las especificaciones 1986 FIPS COBOL son las especificaciones de lenguaje contenidas en ANSI X3.23-1985 COBOL. FIPS COBOL se subdivide en tres
subconjuntos y en cuatro mdulos opcionales. Los tres subconjuntos se identifican
como Inferior, Intermedio y Superior. Los cuatro mdulos opcionales son el
Transcriptor de Informes, Comunicaciones, Depuracin y Segmentacin. Estos
cuatro mdulos opcionales no son parte integral de ninguno de los subconjuntos:
sin embargo, ninguna, todas, o cualquier combinacin de los mdulos opcionales
pueden asociarse a cualquier subconjunto. Cualquier programa grabado que se
ajuste al estndar FIPS debe ajustarse a uno de los subcampos de 1986 FIPS
COBOL. La Tabla 10 muestra los mdulos de proceso estndar 1985 ANSI
Standard COBOL que se incluyen en cada uno de los subcampos de 1986 FIPS
COBOL.
A continuacin se ofrece una explicacin de la notacin utilizada dentro de la tabla:
Un cdigo de 3 caracteres que identifica el mdulo.
En este ejemplo, se hace referencia el mdulo de
Segmentacin.

&

SEG

El nivel de este mdulo soportado por el


estndar 1986 FIPS COBOL. En este ejemplo,
el soporte se proporciona para el ms alto
de los dos niveles del mdulo de
Segmentacin.

,2

&

El rango de niveles de soporte


definido por el estndar ANSI X3.23-1985
COBOL. Un nivel de significa que un
estndar COBOL mnimo no necesita
soportar este mdulo para ajustarse al
estndar.

Tabla 10 (Pgina 1 de 2). Estndar 1985 American National COBOL y Niveles FIPS 1986
Nombre de
Mdulo
1985 ANSI

FIPS
Superior

FIPS
Intermedio

FIPS
Inferior

Ncleo

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

Manipulacin del
Texto Fuente

2 STM 0,2

1 STM 0,2

0 STM 0,2

348

COBOL/400 Gua del usuario

Tabla 10 (Pgina 2 de 2). Estndar 1985 American National COBOL y Niveles FIPS 1986
Nombre de
Mdulo
1985 ANSI

FIPS
Superior

FIPS
Intermedio

FIPS
Inferior

1 SRT 0,1

1 SRT 0,1

0 SRT 0,1

2 IPC 1,2

1 IPC 1,2

1 IPC 1,2

Transcriptor de
Informes

0, o 1 RPW 0,1

0, o 1 RPW 0,1

0, o 1 RPW 0,1

Segmentacin

0,1 o 2 SEG 0,2

0,1 o 2 SEG 0,2

0,1 o 2 SEG 0,2

Depuracin

0,1 o 2 DEB 0,2

0,1 o 2 DEB 0,2

0,1 o 2 DEB 0,2

Comunicaciones

0,1 o 2 COM 0,2

0,1 o 2 COM 0,2

0,1 o 2 COM 0,2

ClasificacinFusin
Comunicacin
Entre Programas

Nota: El compilador COBOL/400 soporta los mdulos opcionales de Segmentacin y Depuracin.


Los elementos que se especifiquen en el programa fuente COBOL/400 y que no se
incluyen en COBOL FIPS 1986 se sealan tal como se describe en el Apndice C,
Nivel de Soporte del Lenguaje en la pgina 339.

Sealizacin SAA
Puede escoger la realizacin de la sealizacin SAA para determinar si las funciones COBOL/400 que utiliza son portables o no a otros entornos SAA COBOL.
La sealizacin se realiza en aquellas funciones COBOL/400 que se encuentran
fuera de SAA COBOL, como por ejemplo:
Ampliaciones COBOL/400
Lmites del compilador COBOL/400
Palabras reservadas no de SAA
Opciones del compilador.
De esta manera, puede escribir programas que se ajusten a la definicin COBOL
SAA.
Como ejemplo de sealizacin SAA en un listado de compilador, consulte la
Figura 12 en la pgina 48. Para realizar la sealizacin SAA mediante el mandato
CRTCBLPGM CL, especifique SAAFLAG(*FLAG). Para realizar la sealizacin
SAA mediante la instruccin PROCESS, especifique SAAFLAG.
Al compilar un programa para que se ajuste a la definicin SAA mediante el
mandato CRTCBLPGM, especifique lo siguiente:
OPTION(\QUOTE \NOSEQUENCE \NONUMBER)
GENOPT(\CRTF \DUPKEYCHK \SYNC)
SAAFLAG(\FLAG)
Si utiliza la instruccin PROCESS, especifique lo siguiente:
QUOTE, NOSEQUENCE, NONUMBER, CRTF,
DUPKEYCHK, SYNC, SAAFLAG.

Apndice D. Mensajes COBOL/400

349

Para obtener ms informacin sobre cmo especificar la opcin para la


sealizacin SAA, consulte el Parmetro SAAFLAG en la pgina 26 y el apartado
Uso de la Instruccin PROCESS para Especificar las Opciones del Compilador en
la pgina 33.
Para obtener informacin acerca de los lmites del compilador, consulte el apndice
Lmites del Compilador en la publicacin COBOL/400 Reference.

350

COBOL/400 Gua del usuario

Apndice E. Diferencias entre el COBOL ANSI 74 COBOL y el


COBOL ANSI 85
Este apndice identifica los elementos del lenguaje COBOL ANSI 85 que no son
compatibles con el COBOL ANSI 74. Estos tems identifican los cambios y condiciones que los usuarios del COBOL ANSI 74 necesitan para saber cundo
migrar al COBOL ANSI 85.
Consulte el apartado Estndares Industriales Utilizados en el Diseo del
Compilador en la pgina xiii para obtener ms informacin acerca del COBOL
ANSI 85.

Migracin de Programas COBOL ANSI 74 a COBOL ANSI 85


A continuacin se muestran algunas de las caractersticas o modificaciones del
COBOL ANSI 85 que pueden afectar a los programas COBOL ANSI 74:
La palabra clave ALPHABET debe preceder al nombre del alfabeto en la clusula nombre del alfabeto en el prrafo SPECIAL-NAMES. Un nombre del alfabeto es una palabra definida por el usuario en el prrafo SPECIAL-NAMES que
da nombre a un juego de caracteres o a un orden de clasificacin.
El tem de datos de clave relativa especificada en la frase RELATIVE KEY no
debe contener el smbolo PICTURE P.
La prueba de clase ALPHABETIC es cierta para letras maysculas, minsculas
y para el carcter en blanco.
Cuando no hay ms instrucciones para procesar en un programa llamado, se
ejecuta una EXIT PROGRAM implcita.
En una instruccin MERGE no se pueden especificar dos archivos en la misma
clusula SAME AREA o SAME SORT-MERGE AREA. Los nicos archivos en
una instruccin MERGE que pueden especificarse en la clusula SAME
RECORD AREA son los asociados con la frase GIVING.
Dentro de la instruccin READ, no puede especificarse la frase INTO a no ser
que:
Todos los registros asociados con el archivo y el tem de datos especificado en la frase INTO sean elementos de grupo o tems alfanumricos elementales, o slo est subordinada una descripcin de registro a la entrada
de descripcin del archivo.
Dentro de la instruccin RETURN, la frase INTO no se puede especificar a no
ser que:
Todos los registros asociados con el archivo y el tem de datos especificado en la frase INTO sean tems de grupo o tems alfanumricos elementales, o slo est subordinada una descripcin de registro a la entrada de
descripcin del archivo de clasificacin-fusin.
Indicador de posicin del archivo - El concepto de un puntero de registro actual
se ha cambiado a indicador de posicin de archivo.
Palabras reservadas - Se han aadido nuevas palabras reservadas.
Estado de E/S - Se han aadido nuevos valores de estado de E/S.
Copyright IBM Corp. 1994

351

EL pseudotexto-1 de la instruccin COPY no debe estar nicamente compuesto por una coma o por dos puntos.
Un tem de datos que aparece en la frase USING de la cabecera de la Divisin
de Procedimiento no debe tener una clusula REDEFINES en la entrada de
descripcin de datos.
Si no se especifica la frase FOOTING, no existe ninguna condicin de fin de
pgina independiente de la condicin de desbordamiento de pgina.
La frase NO REWIND no puede especificarse en una instruccin CLOSE que
tenga una frase REEL/UNIT.
Las instrucciones CANCEL y STOP RUN cierran todos los archivos abiertos.
Cuando un tem receptor es un elemento de datos de longitud variable y contiene el objeto de la frase DEPENDING ON, se utilizar la longitud mxima del
elemento.
Dentro de la frase VARYING ... AFTER de la instruccin PERFORM, el
identificador-2 se aumenta antes de establecer el identificador-5.
Cualquier subindexacin para el identificador-4 de la frase REMAINDER de la
instruccin DIVIDE se evala despus de que el resultado de la operacin
DIVIDE se haya almacenado en el identificador-3 de la frase GIVING.
Las frases ADVANCING PAGE y END-OF-PAGE no deben estar en la misma
instruccin WRITE.
La serie de caracteres de PICTURE de un tem alfanumrico slo puede contener el smbolo A. No se permite ninguna edicin para la categora de datos
alfabticos.
Nota: Un carcter alfabtico es una letra o un carcter en blanco.
Cuando se hace referencia a un tem de datos descritos por una PICTURE y
dicho elemento contiene una P, se considera que las posiciones del dgito
especificadas por P contienen ceros en las operaciones siguientes:
Toda operacin que precise un operando emisor de tipo numrico
Una instruccin MOVE donde el operando emisor sea numrico y cuya
serie de caracteres PICTURE contenga el smbolo P
Una instruccin MOVE donde el operando emisor sea numrico editado y
cuya serie de caracteres PICTURE contenga el smbolo P, y el operando
sea numrico o numrico editado.
Una operacin de comparacin donde ambos operandos sean numricos.
El literal en la clusula CURRENCY SIGN no puede ser una constante figurativa.
Si la instruccin COPY aparece en una entrada de comentarios, se considera
parte de la entrada de comentarios.
Se definen los siguientes casos de exponenciacin:
Si una expresin con un valor cero se eleva a una potencia negativa o
igual a cero, se produce una condicin de error de tamao.
Si la evaluacin de la exponenciacin da un nmero real a la vez positivo y
negativo, se devuelve el nmero positivo.

352

COBOL/400 Gua del usuario

Si como resultado de la evaluacin no existe un nmero real, existe una


condicin de error.
Cuando el literal de constante figurativa ALL no se asocia a otro tem de datos,
la longitud de la serie de caracteres es la longitud del literal.

Apndice E. Comparacin entre el COBOL ANSI 74 y el COBOL ANSI 85

353

354

COBOL/400 Gua del usuario

Apndice F. Soporte del Juego de Caracteres de Idiomas


Internacionales de Doble Byte
Ampliacin de IBM
Este apndice slo describe las mejoras realizadas en el lenguaje de programacin
COBOL para escribir programas que procesan caracteres de doble byte.
En concreto, este apndice describe dnde se pueden utilizar los caracteres del
Juego de Doble Byte (DBCS) en cada parte de un programa COBOL y las consideraciones que hay que saber para trabajar con datos DBCS en el lenguaje
COBOL/400.
Existen dos formas de especificar caracteres DBCS:
Caracteres DBCS entre parntesis
Caracteres de datos DBCS grficos
Por lo general, COBOL maneja caracteres DBCS entre parntesis de la misma
manera que maneja caracteres alfanumricos. Los caracteres DBCS entre parntesis pertenecen a una serie de caracteres en la que cada carcter est representado por dos bytes. El carcter empieza con un carcter de desplazamiento a
teclado ideogrfico (SO) y finaliza con un carcter de desplazamiento a teclado
estndar (SI). Por lo tanto, depende exclusivamente del usuario conocer (o disponer de la comprobacin del programa COBOL) los tems de datos que contienen
los caracteres DBCS, as como asegurarse de que el programa recibe y procesa
correctamente esta informacin.
De este modo, el usuario ya puede utilizar las descripciones DDS que definen los
campos de datos DBCS grficos con los programas COBOL/400. Los caracteres
DBCS grficos pertenecen a una serie de caracteres en la que cada carcter est
representado por dos bytes. Esta serie de caracteres no contiene ni caracteres de
desplazamiento a teclado ideogrfico ni caracteres de desplazamiento a teclado
estndar. No es posible utilizar programas que contengan datos grficos. Para
obtener ms informacin sobre cmo especificar tems de datos grficos mediante
los programas COBOL/400, consulte el apartado Campos Grficos DBCS en la
pgina 139.

Utilizacin de Caracteres DBCS en Literales


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
Slo Byte (SBCS).

Literales DBCS: El compilador COBOL reconoce los caracteres DBCS en los literales DBCS cuando se utiliza la opcin GRAPHIC en la instruccin PROCESS.
Nota: La opcin GRAPHIC en la instruccin PROCESS no debe confundirse con
el valor *GRAPHIC del parmetro CVTOPT del mandato CRTCBLPGM ni
con la opcin CVTGRAPHIC en la instruccin PROCESS, que se utilizan
Copyright IBM Corp. 1994

355

para especificar los datos grficos de doble byte desde una descripcin
DDS. Para obtener ms informacin sobre cmo especificar datos grficos,
consulte el apartado Campos Grficos DBCS en la pgina 139.

Literales DBCS/SBCS: El compilador COBOL reconoce caracteres DBCS en literales DBCS/SBCS (mixtos), cuando se est en un sistema DBCS y no se especifica ni la opcin GRAPHIC ni la instruccin PROCESS.

Especificacin de Literales que contienen Caracteres DBCS


Cuando se especifica un literal que contiene caracteres DBCS, siga las mismas
normas que se aplican al especificar literales alfanumricos, adems de las
siguientes reglas especficas para los tipos de literal:

Especificacin de un Literales DBCS: Cuando se especifica un literal DBCS,


tenga en cuenta lo siguiente:
El formato de un literal DBCS es:
"EK1K2F"
Unas comillas abren y cierran el literal.
Un carcter de desplazamiento a teclado ideogrfico (E) sigue inmediatamente
a la comilla inicial y ocupa 1 byte. Un carcter de desplazamiento a teclado
ideogrfico es un carcter de control (hex 0E) que indica el inicio de una serie
de caracteres de doble byte.
Un carcter de desplazamiento a teclado estndar (F) precede inmediatamente la comilla final y ocupa 1 byte. Un carcter de desplazamiento a
teclado estndar es un carcter de control (HEX 0F) que indica el final de una
serie de caracteres de doble byte.
Todos los caracteres DBCS aparecen entre los caracteres de desplazamiento
a teclado ideogrfico y de desplazamiento a teclado estndar.
Slo los caracteres DBCS pueden aparecer en el literal (las series nulas no
son vlidas).
La longitud mxima de un literal DBCS es de 80 caracteres DBCS, incluyendo los
caracteres de control de desplazamiento. (Si se cuentan juntos son equivalentes en
longitud a un carcter DBCS). Los caracteres de control de desplazamiento son
parte del literal y toman parte en todas las operaciones.
Consulte el apartado Continuacin de los Literales DBCS en una Lnea Nueva en
la pgina 358 para obtener ms informacin sobre cmo ampliar los literales
DBCS.

Especificacin de un Literal DBCS/SBCS: cuando se especifica un literal


DBCS/SBCS, recuerde que:
Los literales DBCS/SBCS pueden tener diferentes formas. A continuacin se
muestra slo un posible ejemplo:
"SINGLEEK1K2K3FBYTES"
USAGE DISPLAY debe ser explcita o implcita.
Unas comillas abren y cierran el literal.

356

COBOL/400 Gua del usuario

Los caracteres EBCDIC pueden aparecer antes y despus de cualquier serie


de caracteres DBCS en el literal mixto.
Todas las series de caracteres DBCS aparecen entre caracteres de desplazamiento a teclado ideogrfico y a teclado estndar.
Es preciso doblar todas las comillas DBCS que aparezcan dentro del literal.
No es necesario doblar las comillas DBCS que se encuentren dentro del literal.
Slo puede utilizar series nulas DBCS (caracteres de desplazamiento a teclado
ideogrfico y a teclado estndar sin ningn carcter DBCS) slo cuando el
literal contenga al menos un carcter SBCS.
Los caracteres de desplazamiento a teclado ideogrfico y a teclado estndar no
pueden jerarquizarse.
Los caracteres de control de desplazamiento son parte del literal y toman parte en
todas las operaciones.
Los literales DBCS/SBCS no pueden continuar en ms lneas. Estn restringidos al
espacio del REA B de una lnea.

Otras Consideraciones
Comillas: Aunque el comentario anterior utiliza el trmino comillas para describir el
carcter que identifica un literal, el carcter que realmente se ha utilizado puede
variar segn la opcin especificada en el mandato CL CRTCBLPGM o en la instruccin PROCESS. Si se especifica la opcin APOST, se utiliza un apstrofe (').
De lo contrario, se utilizan las comillas ("). En este apndice, las comillas hacen
referencia tanto a los apstrofes como a las comillas. El carcter que elija no
afecta a las reglas que especifican el literal.
Caracteres de Desplazamiento: Los caracteres de desplazamiento a teclado
ideogrfico y a teclado estndar separan los caracteres EBCDIC de los caracteres
DBCS. Forman parte de los literales DBCS y DBCS/SBCS. Por lo tanto, los
caracteres de codificacin de desplazamiento participan en todas las operaciones
cuando aparecen en los literales DBCS o DBCS/SBCS.

Caracteres DBCS comprobados por el compilador COBOL


Cuando el compilador COBOL encuentra una serie DBCS, la comprueba explorando los caracteres DBCS uno a uno.
Las condiciones siguientes provocan que el compilador COBOL diagnostique un
literal que contenga caracteres DBCS como no vlido:
La sintaxis del literal es incorrecta.
El literal DBCS es ms largo que una lnea y no respeta las normas para la
continuacin de literales no numricos. (Consulte el apartado Continuacin de
los Literales DBCS en una Lnea Nueva en la pgina 358 para obtener ms
informacin.)
El literal DBCS/SBCS es ms largo que una lnea.
Cuando el compilador COBOL encuentra un literal DBCS que no es vlido, genera
un mensaje de error y luego procesa el literal como un literal alfanumrico.

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

357

Para cada literal DBCS o SBCS que no es vlido, el compilador genera un


mensaje de error y acepta o ignora el literal.

Continuacin de los Literales DBCS en una Lnea Nueva


Para continuar un literal DBCS en otra lnea del cdigo fuente, realice todos los
pasos siguientes:
Coloque un carcter de desplazamiento a teclado estndar en la columna 71
72 de la lnea a continuar (si coloca el carcter en la columna 71, se ignora el
espacio en blanco de la columna 72)
Coloque un guin (-) en la columna 7 (rea de continuacin) de la lnea nueva
Coloque unas comillas, a continuacin un carcter de desplazamiento a
teclado ideogrfico, y despus el resto del literal en el rea B de la lnea
nueva.
Por ejemplo:
-A 1 B
..
.
1 DBCS1
"EK4K5F".
..
.

PIC X(12)

VALUE "EK1K2K3F

El valor de DBCS1 es "0EK1K2K3K4K50F".


El carcter de desplazamiento a teclado estndar, las comillas y el carcter de
desplazamiento a teclado ideogrfico utilizados para continuar una lnea no se
cuentan en la longitud del literal DBCS. Se cuenta el primer carcter de desplazamiento a teclado ideogrfico y el primer carcter de desplazamiento a teclado
estndar.

En qu lugar puede utilizar los caracteres DBCS en un programa


COBOL
En general, puede utilizar los literales DBCS o DBCS/SBCS all dnde se permitan
los literales no numricos. Sin embargo, los literales que se utilicen para lo
siguiente no pueden incluir caracteres de doble byte:

Clusula ALPHABET-NAME
Clusula CURRENCY SIGN
Clusula ASSIGN
Clusula CLASS
Instruccin CALL
Instruccin CANCEL

Nota: No puede utilizar los caracteres DBCS para palabras o nombres COBOL.
Consulte la publicacin COBOL/400 Reference para obtener ms informacin sobre cmo dar formato a los nombres del sistema COBOL, palabras reservadas y palabras definidas por el usuario, como por ejemplo
nombres de datos y nombres de archivos.

358

COBOL/400 Gua del usuario

Forma de Escribir Comentarios


Se puede escribir un comentario que contenga caracteres DBCS en un programa
COBOL colocando un asterisco (*) o barra (/) en la columna siete de la lnea del
programa. Los dos smbolos hacen que el compilador trate la informacin que
sigue a la columna siete como documentacin. La barra tambin provoca que se
genere un salto de pgina. Puesto que el compilador COBOL no comprueba el
contenido de las lneas de comentarios, los caracteres DBCS que se encuentren
dentro de comentarios no se detectan. Los caracteres DBCS que no son vlidos
pueden hacer que el listado del compilador se imprima de forma incorrecta.

Divisin de Identificaciones
Se pueden colocar entradas de comentarios que contengan caracteres DBCS en
cualquier parte de la Divisin de Identificaciones excepto en el prrafo
PROGRAM-ID. El nombre del programa especificado en el prrafo PROGRAM-ID
debe ser alfanumrico.

Divisin de Entornos
Seccin de Configuracin
Es posible utilizar los caracteres DBCS en las entradas de comentarios slo en el
prrafo de la Seccin de Configuracin. Todos los nombres de funcin, nombres
mnemotcnicos, nombres de condicin y nombres del alfabeto deben especificarse
con los caracteres alfanumricos. Para las entradas SOURCE-COMPUTER y
OBJECT-COMPUTER, utilice el nombre del sistema alfanumrico:
IBM-AS400
No es posible utilizar los literales DBCS o DBCS/SBCS en la Seccin de Configuracin. En su lugar, utilice los literales alfanumricos para definir un nombre del
alfabeto y el literal en la clusula CURRENCY SIGN del prrafo SPECIAL-NAMES.
No hay alfabeto DBCS. En su lugar, utilice el juego de caracteres EBCDIC.

Seccin Entrada-Salida
Especifique todos los nombres de datos, nombres de archivos y nombres de asignacin que utilicen caracteres alfanumricos. Puede utilizar los caracteres DBCS
en los comentarios.
Para archivos indexados, el nombre de datos en la clusula RECORD KEY puede
referirse a un tem de datos DBCS o DBCS/SBCS dentro de un registro. El
nmero de campos en el registro, ms el nmero de posiciones que ocupa la clave
del registro, no puede ser superior a 120.
Nota: Cada carcter DBCS ocupa dos posiciones y los caracteres de control de
desplazamiento ocupan cada uno una posicin. Asegrese de que la descripcin de datos de la clave y la posicin de la clave en el archivo coincidan con las especificadas en el momento de creacin del archivo.
No puede utilizar datos DBCS y DBCS/SBCS como RELATIVE KEY en los
archivos relativos.

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

359

Prrafo de Control de Archivos


Clusula ASSIGN: No puede utilizar los literales que contengan caracteres DBCS
en la clusula ASSIGN para especificar un medio externo como una impresora o
una base de datos.

Divisin de Datos
Seccin de Archivos
Para la entrada FD (Descripcin de Archivo), se puede utilizar tems de datos
DBCS o DBCS/SBCS o literales en la clusula VALUE OF. La clusula DATA
RECORDS puede referirse slo a tems de datos. Debido a que el compilador
COBOL/400 trata la clusula VALUE OF y la clusula DATA RECORDS en la
Seccin de Archivos como documentacin, ninguna clusula tiene efecto alguno
cuando ejecuta el programa. No obstante, el compilador COBOL comprueba todos
los literales de la clusula VALUE OF para asegurarse de que son vlidos.
Para cintas magnticas, el sistema slo 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 clusula CODE-SET como NATIVE. Utilice los caracteres
alfanumricos para especificar el nombre del alfabeto.

Seccin de Almacenamiento de Trabajo


Clusula REDEFINES: las normas existentes para los datos redefinidos tambin
se aplican a los datos que contienen caracteres DBCS. Cuando determina la longitud de un tem de datos redefinido o para redefinir, recuerde que cada carcter
DBCS es el doble de largo que un carcter alfanumrico.
Asegrese tambin de que los tems de datos redefinidos contengan los caracteres
de control de desplazamiento cuando y donde sea necesario.

Clusula OCCURS: Utilice esta clusula para definir las tabla para el almacenamiento de datos DBCS o DBCS/SBCS. Si especifica la frase
ASCENDING/DESCENDING KEY, el COBOL asume que los contenidos de la tabla
estn en la secuencia de clasificacin EBCDIC del programa. Los caracteres de
control de desplazamiento en los datos DBCS y DBCS/SBCS forman parte del
orden de clasificacin.
Para obtener ms informacin sobre el manejo de tablas que contienen caracteres
DBCS, consulte el apartado Manejo de TablasInstruccin SEARCH en la
pgina 367.

Clusula JUSTIFIED RIGHT: Utilice la clusula JUSTIFIED RIGHT para alinear


los datos DBCS o DBCS/SBCS en la posicin ms a la derecha de un campo
receptor elemental. Si el campo receptor es inferior al campo emisor, COBOL
trunca los caracteres que estn ms a la derecha. Si el campo receptor es ms
largo que el campo emisor, COBOL llena el espacio inutilizado en la parte
izquierda del campo receptor con espacios en blanco.
La clusula JUSTIFIED no afecta al valor inicial en la clusula VALUE.

360

COBOL/400 Gua del usuario

Clusula VALUE: Se pueden utilizar los literales DBCS o DBCS/SBCS para


especificar un valor inicial para un tem de datos que no sea numrico, o definir los
valores para las entradas del nombre de condicin del nivel 88.
Todos los caracteres de control de desplazamiento en el literal se consideran parte
de la serie PICTURE del literal, excepto cuando se utiliza para continuar una lnea
nueva. Cuando contina un literal DBCS, el compilador no incluye el carcter de
desplazamiento a teclado estndar en la columna 71 72, o la comilla inicial (") y
el carcter de desplazamiento a teclado ideogrfico en la siguiente lnea como
parte del literal DBCS. De todas formas, asegrese de que el literal DBCS no
exceda el tamao del tem de datos especificado en la clusula PICTURE, de lo
contrario se produce el truncamiento.
Nota: Los literales DBCS/SBCS mixtos no pueden continuar en una lnea nueva.
Cuando utilizan literales que contienen caracteres DBCS en la clusula VALUE
para las entradas del nombre de condicin de nivel 88, COBOL trata los caracteres
DBCS como alfanumricos. Por lo tanto, siga las normas que rigen la especificacin de datos alfanumricos, incluyendo la permisin de una opcin THROUGH.
Esta opcin utiliza el orden de clasificacin EBCDIC normal, pero recuerde que los
caracteres de control de desplazamiento y los datos DBCS/SBCS forman parte de
la secuencia de clasificacin.

Clusula PICTURE: Utilice el smbolo X de PICTURE para definir los tems de


datos DBCS y DBCS/SBCS. Debido a que los caracteres DBCS son el doble de
largos que los alfanumricos, y estn dentro de los caracteres de control de desplazamiento, debe definir un tem de datos DBCS que contenga n caracteres
DBCS como
PICTURE X(2n+2)
Un elemento de datos DBCS/SBCS que contenga m caracteres SBCS, y una serie
de n caracteres DBCS se definira como
PICTURE X(m+2n+2)
Puede utilizar todos los smbolos PICTURE alfanumricos editados para los tems
de datos DBCS y DBCS/SBCS. Los smbolos de edicin causan el mismo efecto
en los datos DBCS de estos tems que en los tems de datos alfanumricos. Compruebe que haya obtenido los resultados deseados.

Clusula RENAMES: Utilice esta clusula para especificar los agrupamientos


alternativos de tems de datos elementales. Las normas existentes para la redenominacin de tems de datos alfanumricos tambin se aplica para los tems de
datos DBCS y DBCS/SBCS.

Divisin de Procedimientos
Declarativas
Un identificador en la sentencia USE FOR DEBUGGING de la seccin
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 procedimientos en la sentencia USE FOR DEBUGGING.

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

361

Expresiones Condicionales
Debido a que los nombres de condicin (entradas de nivel 88) pueden referirse a
los tems de datos que contienen caracteres DBCS, puede utilizar la condicin de
nombre de condicin para comprobar estos datos. (Consulte el apartado Clusula
VALUE en la pgina 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 condicin.
Puede utilizar los tems de datos DBCS o DBCS/SBCS o los literales como
operandos en una condicin de relacin. Debido a que COBOL trata los datos
DBCS como alfanumricos, todas las comparaciones se producen de acuerdo con
las normas de los operandos alfanumricos. Tenga siempre presente que:
El sistema no reconoce el contenido mixto.
El sistema utiliza los cdigos de desplazamiento en las comparaciones de
datos DBCS y DBCS/SBCS.
El sistema compara los datos utilizando la secuencia de clasificacin EBCDIC,
o una secuencia definida por el usuario.
En una comparacin de tem DBCS o DBCS/SBCS con tems similares de
tamao desigual, se llena el tem ms pequeo de la derecha con espacios
EBCDIC.
Consulte la seccin Prrafo SPECIAL-NAMES en el manual COBOL/400
Reference para obtener ms informacin.
Puede utilizar las condiciones de clase y de estado de conmutador tal y como se
describe en la publicacin COBOL/400 Reference.

Instrucciones de Entrada/Salida
Instruccin ACCEPT: Los datos de entrada recibidos desde un dispositivo utilizando la instruccin 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 edicin ni la comprobacin de error en los datos.
Si utiliza la instruccin ACCEPT de Formato 3 para obtener informacin
OPEN-FEEDBACK acerca del archivo, dicha informacin incluye un campo que
muestra si el archivo contiene datos DBCS o DBCS/SBCS.
La informacin que se recibe desde el rea de datos local por medio de una instruccin ACCEPT de Formato 4 puede incluir series de caracteres DBCS o
DBCS/SBCS. La informacin recibida sustituye los contenidos existentes. COBOL
no realiza ninguna edicin o comprobacin de errores. Esto tambin se aplica a la
informacin recibida desde el rea de datos PIP por medio de una instruccin
ACCEPT de Formato 5.
Al utilizar la instruccin ACCEPT de Formato 6, se pueden obtener los atributos de
una pantalla de estacin de trabajo y de su teclado. Para estaciones de pantalla
que pueden visualizar caracteres DBCS, el sistema establece el valor apropiado en
el tem de datos ATTRIBUTE-DATA. No se puede utilizar los caracteres DBCS
para nombrar un dispositivo.

362

COBOL/400 Gua del usuario

Si utiliza una instruccin ACCEPT (Formato 7) ampliada para la entrada de la


estacin de trabajo a nivel de campo, debe asegurarse de que los datos DBCS no
se dividen entre lneas. COBOL no realiza ninguna edicin o comprobacin de
errores.

Instruccin DISPLAY: Puede especificar los tems de datos DBCS o


DBCS/SBCS o los literales en la instruccin DISPLAY. Puede mezclar los tipos de
datos. Los datos DBCS y DBCS/SBCS, de tems de datos o literales, se envan tal
y como aparecen en el dispositivo del programa o en el rea de datos local que es
el destino nombrado en la instruccin DISPLAY.

|
|
|
|

Debido a que COBOL ignora las caractersticas 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 opcin de visualizacin ampliada
*NOUNDSPCHAR (o la opcin del parmetro de instruccin del proceso equivalente) cuando se compile el programa, para asegurarse de que la estacin de
trabajo puede manejar correctamente los datos DBCS.
Nota: ALL es una opcin vlida para literales mixtos.
Si utiliza una instruccin DISPLAY (Formato 3) ampliada para la salida de la
estacin de trabajo a nivel de campo, debe asegurarse de que los datos DBCS no
se dividan entre lneas.

Instruccin READ: Puede utilizar los tems de datos DBCS o DBCS/SBCS como
la RECORD KEY para un archivo indexado. Consulte el apartado Seccin
Entrada-Salida en la pgina 359 para obtener ms informacin.
Frase INTO: Es posible leer un registro de un tem de datos DBCS o DBCS/SBCS
mediante la frase INTO. Esta frase provoca que se realice una instruccin MOVE
(pero sin la opcin CORRESPONDING). El compilador mueve los datos DBCS y
DBCS/SBCS de la misma manera que mueve los datos alfanumricos. No
asegura que estos datos sean vlidos.
Instruccin REWRITE: Utilice la frase FROM de esta instruccin para transferir
datos DBCS o DBCS/SBCS desde un tem de datos DBCS o DBCS/SBCS a un
registro existente. La frase FROM provoca que ambos tipos de datos se muevan
de la misma manera que la frase INTO en la instruccin READ. (Consulte el apartado Instruccin READ.)
Instruccin START: Si utiliza caracteres DBCS en la clave de un archivo
indexado, especifique un tem de datos correspondientes en la frase KEY de la
instruccin START.
Debe cumplirse una de las condiciones siguientes:
El elemento de datos debe ser el mismo que el tem de datos especificado en
la clusula RECORD KEY del prrafo FILE-CONTROL.
El tem de datos tiene el mismo primer carcter que la clave de registro y no
es ms largo que la clave de registro.
Puede especificar los operadores vlidos (como por ejemplo EQUAL, GREATER
THAN, NOT LESS THAN) en la frase KEY. El sistema puede seguir la secuencia
de clasificacin EBCDIC o la secuencia definida por el usuario.

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

363

Instruccin WRITE: Utilice la frase FROM de esta instruccin para grabar los
datos DBCS o DBCS/SBCS en un registro. Esta frase mueve los datos de la
misma manera que la instruccin REWRITE. (Consulte el apartado Instruccin
REWRITE).
Debe incluir los caracteres de control de desplazamiento cuando grabe los datos
en un archivo de dispositivo.

Instrucciones para la Manipulacin de Datos


Instrucciones Aritmticas: Debido a que COBOL trata los caracteres DBCS de
la misma manera que lo hace con los caracteres alfanumricos, no utilice los
caracteres DBCS en las operaciones numricas, ni los manipule con instrucciones
aritmticas.
Instruccin INSPECT: Puede utilizar cualquier tem de datos DBCS o
DBCS/SBCS como operando para la instruccin INSPECT. En este tipo de operaciones, el sistema cuenta y sustituye cada mitad de un carcter DBCS,
incluyendo los caracteres de control de desplazamiento. Por lo tanto, puede que
los datos no coincidan adecuadamente.
Puede utilizar cualquier combinacin de operandos de doble byte y alfanumricos
con literales o tems de datos de caracteres de doble byte. Si utiliza la frase
REPLACING, puede sustituir las partes del tem inspeccionado por datos
alfanumricos, o viceversa.
No puede sustituir una serie de caracteres por otra de una longitud distinta.
Tngalo presente cuando sustituya caracteres alfanumricos por caracteres DBCS,
o viceversa.
Si quiere controlar la utilizacin de la instruccin INSPECT con tems que contengan caracteres DBCS, defina los tems de datos que contengan caracteres de
control de desplazamiento. Utilice los caracteres de desplazamiento a teclado
ideogrfico o a teclado estndar como los operandos BEFORE/AFTER en la instruccin INSPECT.
El ejemplo siguiente muestra cmo puede utilizar la instruccin INSPECT para sustituir un carcter DBCS por otro.
1
1

SUBJECT-ITEM
DBCS-CHARACTERS
5 SHIFT-OUT
5 DBCS-CHARACTER-1
5 DBCS-CHARACTER-2
5 SHIFT-IN

PICTURE X(5).
VALUE "EK1K2F".
PICTURE X.
PICTURE XX.
PICTURE XX.
PICTURE X.

La instruccin INSPECT debe codificarse de la manera siguiente:


INSPECT SUBJECT-ITEM
REPLACING ALL DBCS-CHARACTER-1
BY DBCS-CHARACTER-2
AFTER INITIAL SHIFT-OUT.
Nota: El uso de la frase AFTER INITIAL SHIFT-OUT sirve para evitar el riesgo de
sustituir de forma accidental dos caracteres alfanumricos consecutivos que
tengan los mismos valores EBCDIC como DBCS-CHARACTER-1 (en casos
dnde SUBJECT-ITEM datos DBCS/SBCS).

364

COBOL/400 Gua del usuario

Tambin puede utilizar la instruccin INSPECT para determinar si un tem de datos


contiene caracteres DBCS, de forma que se pueda producir el proceso apropiado.
Por ejemplo:
1
1
1

SUBJECT-FIELD
TALLY-FIELD
SHIFTS
5 SHIFT-OUT
5 SHIFT-IN

PICTURE X(5).
PICTURE 9(3) COMP.
VALUE "EF".
PICTURE X.
PICTURE X.

En la Divisin de Procedimientos debe introducir lo siguiente:


MOVE ZERO TO TALLY-FIELD.
INSPECT SUBJECT-FIELD TALLYING TALLY-FIELD
FOR ALL SHIFT-OUT.
IF TALLY-FIELD IS GREATER THAN ZERO THEN
PERFORM DBCS-PROCESSING
ELSE
PERFORM A-N-K-PROCESSING.

Instruccin MOVE: Todos los caracteres DBCS se mueven como series de


caracteres alfanumricos. El sistema no convierte ni examina los datos.
Puede mover los literales DBCS/SBCS a tems de grupo e tems alfanumricos.
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 ms largo que el tem receptor.
Esta operacin puede reducir la integridad de los datos.
Llena el tem emisor con espacios en blanco si es ms corto que el tem
receptor.
Para comprender mejor el efecto de los smbolos de edicin en la clusula
PICTURE del tem de datos receptor, consulte la publicacin COBOL/400
Reference.

Instruccin SET (Formato Nombre-Condicin): Cuando se establece el nombre


de condicin TRUE en esta instruccin, COBOL desplaza el literal de la clusula
VALUE hasta el tem de datos asociado. Se puede mover un literal con caracteres
DBCS.
Instruccin STRING: Puede utilizar la instruccin STRING para construir un tem
de datos que contenga subcampos DBCS o DBCS/SBCS. Todos los datos de los
tems de datos fuente o literales, incluyendo los caracteres de control de desplazamiento, la mitad de un carcter DBCS a la vez, se desplazan hasta el tem de
datos receptor.
Instruccin UNSTRING: La instruccin UNSTRING trata los datos DBCS y
DBCS/SBCS de la misma forma que los datos alfanumricos. La operacin
UNSTRING se realiza en una mitad del carcter DBCS a la vez.
Los tems de datos pueden contener caracteres alfanumricos y DBCS dentro del
mismo campo.
Utilice la frase DELIMITED BY para localizar subcampos de doble byte y
alfanumricos dentro de un campo de datos. Identifique los tems de datos que
Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

365

contengan caracteres de control de desplazamiento, y utilcelos como identificadores en la frase DELIMITED BY. Observe con detenimiento los ejemplos
siguientes para comprender mejor cmo se lleva a cabo lo expuesto anteriormente.
Utilice la variable POINTER para continuar examinando los subcampos del campo
emisor.
Despus de que el sistema realice la operacin UNSTRING, puede comprobar los
delimitadores almacenados mediante las frases DELIMITER IN con los caracteres
de control de desplazamiento para ver qu subcampos contienen caracteres DBCS
y cules contienen caracteres alfanumricos.
El ejemplo siguiente muestra cmo puede establecer los campos para preparar la
operacin no de serie en la serie de caracteres que contienen datos DBCS/SBCS:
1
1

SUBJECT-FIELD
FILLER.
5 UNSTRING-TABLE
1 RECEIVER
1 DELIMTR
1 COUNTS
SHIFTS
5 SHIFT-OUT
5 SHIFT-IN

PICTURE X(4)
OCCURS 4 TIMES.
PICTURE X(4).
PICTURE X.
PICTURE 99 COMP.
VALUE "EF".
PICTURE X.
PICTURE X.

Codifique la instruccin UNSTRING de la manera siguiente:


UNSTRING SUBJECT-FIELD

DELIMITED BY SHIFT-OUT
OR SHIFT-IN
INTO RECEIVER (1) DELIMITER IN DELIMTR (1)
COUNT
IN COUNTS (1)
INTO RECEIVER (2) DELIMITER IN DELIMTR (2)
COUNT
IN COUNTS (2)
INTO RECEIVER (3) DELIMITER IN DELIMTR (3)
COUNT
IN COUNTS (3)
INTO RECEIVER (4) DELIMITER IN DELIMTR (4)
COUNT
IN COUNTS (4)
ON OVERFLOW PERFORM UNSTRING-OVERFLOW-MESSAGE.
Esta instruccin UNSTRING divide una serie de caracteres en partes alfanumricas
y DBCS. Teniendo en cuenta que los datos en la serie de caracteres son vlidos,
un valor del delimitador de desplazamiento a teclado ideogrfico indica que el
campo receptor correspondiente contiene datos alfanumricos, mientras que un
valor de desplazamiento a teclado estndar indica que el campo receptor correspondiente tiene datos DBCS. Puede comprobar los tems de datos COUNT para
determinar si cada campo receptor ha recibido todos los caracteres. La figura
siguiente es un ejemplo que muestra los resultados de la operacin UNSTRING
descrita anteriormente:

366

COBOL/400 Gua del usuario

SUBJECT-FIELD = ABCEK1K2K3FDEK4K5K6F
RECEIVER (1) = ABC
DELIMTR (1) = E
RECEIVER (2) = K1K2K3
DELIMTR (2) = F
RECEIVER (3) = D
DELIMTR (3) = E
RECEIVER (4) = K4K5K6
DELIMTR (4) = F

COUNTS
COUNTS
COUNTS
COUNTS

(1)
(2)
(3)
(4)

=
=
=
=

3
6
1
6

SUBJECT-FIELD = EK1K2K3FABCEK4F
RECEIVER (1) = (blanks) DELIMTR (1)
RECEIVER (2) = K1K2K3
DELIMTR (2)
RECEIVER (3) = ABC
DELIMTR (3)
RECEIVER (4) = K4
DELIMTR (4)

COUNTS
COUNTS
COUNTS
COUNTS

(1)
(2)
(3)
(4)

=
=
=
=

6
3
2

=
=
=
=

E
F
E
F

Instrucciones de Bifurcacin de Procedimientos


Puede utilizar un literal DBCS o DBCS/SBCS como el operando para la instruccin
STOP. Cuando lo haga, el sistema visualiza el literal y al mismo tiempo lo introduce en la estacin de trabajo para tareas interactivas. Para trabajos por lotes, el
sistema subrayada la ubicacin habitual en la que apareceran literales en la cola
de mensajes del operador del sistema. El sistema no edita ni comprueba los contenidos del literal.

Manejo de TablasInstruccin SEARCH


Puede realizar una instruccin SEARCH de Formato 1 (bsqueda secuencial de
una tabla) en una tabla que contenga datos DBCS o DBCS/SBCS en medio
carcter DBCS a la vez.
Tambin puede realizar la instruccin SEARCH de Formato 2 (SEARCH ALL) con
una tabla DBCS o DBCS/SBCS. Ordene la tabla de acuerdo con la secuencia de
clasificacin escogida.
Nota: Los caracteres de control de desplazamiento en los datos DBCS y
DBCS/SBCS estn incluidos dentro de la comparacin.

SORT/MERGE
No se puede realizar una clasificacin alfabtica DBCS utilizando COBOL. Sin
embargo, puede utilizar tems de datos DBCS o DBCS/SBCS como claves en una
instruccin SORT o MERGE. La operacin de clasificacin ordena los datos de
acuerdo con la secuencia de clasificacin especificada en el prrafo SORT,
MERGE o SPECIAL NAMES. El sistema ordena cualquier carcter de control de
desplazamiento que se encuentre dentro de las claves DBCS y DBCS/SBCS.
Utilice la instruccin RELEASE para transferir registros que contengan caracteres
DBCS desde un rea de entrada/salida hasta la fase inicial de una operacin de
clasificacin. El sistema realiza la frase FROM con la instruccin RELEASE de la
misma manera que realiza la frase FROM con la instruccin WRITE. (Consulte el
apartado Instruccin WRITE en la pgina 364).
Tambin es posible utilizar la instruccin RETURN para transferir registros que
contengan caracteres DBCS desde la fase final de una operacin de fusin o clasificacin hasta un rea de entrada/salida. El sistema realiza la frase INTO con la
instruccin RETURN de la misma manera que realiza la frase INTO con la instruccin READ. (Consulte el apartado Instruccin READ en la pgina 363).

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

367

Instrucciones Dirigidas al Compilador


Instrucciones COPY
Puede utilizar la instruccin COPY para copiar el texto fuente que contiene caracteres DBCS en un programa COBOL. Cuando lo haga, asegrese de que especifica el nombre de miembro, nombre de archivo y el nombre de la biblioteca
utilizando datos alfanumricos y de que los especifica de acuerdo con las normas
establecidas en la COBOL/400 Reference
Utilice la instruccin COPY de Formato 2 para copiar campos definidos en las
especificaciones de descripcin de datos (DDS). Los tems de datos DBCS y
DBCS/SBCS (el valor en la columna 35 del formato DDS es O) se copian en un
programa COBOL en el formato PICTURE X(n). El listado del compilador no indica
que estos campos contengan caracteres DBCS, a no ser que un campo sea un
campo clave. Si es as, el sistema imprime una O en la tabla de comentarios para
las claves.
Los tems de datos DBCS grficos se copian a un programa COBOL en formato
PICTURE X(N). El listado del compilador indica que estos campos contienen datos
grficos. Consulte el apartado Campos Grficos DBCS en la pgina 139 si
desea consultar la descripcin de los tipos de datos DBCS grficos.
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.
Si especifica la frase REPLACING de la instruccin COPY, tenga en cuenta que:
El pseudotexto puede contener cualquier combinacin de caracteres DBCS y
alfanumricos.
Puede utilizar literales con contenido DBCS o DBCS/SBCS.
Los identificadores pueden referirse a un tem de datos que contiene caracteres DBCS.

Instruccin TITLE
Puede utilizar literales DBCS/SBCS como el literal de la instruccin TITLE.

Comunicaciones entre programas


Puede especificar entradas para los tems de datos DBCS o DBCS/SBCS en la
Seccin de Enlace de la Divisin de Datos.
Se pueden pasar caracteres DBCS desde un programa a otro especificando los
tems de datos de la frase USING. No puede utilizar caracteres DBCS en la instruccin CALL para el nombre de programa del programa llamado.
No puede utilizar caracteres DBCS en la instruccin CANCEL porque especifican
nombres de programas.

368

COBOL/400 Gua del usuario

Distintivo FIPS
Las mejoras para el lenguaje COBOL que permiten utilizar caracteres DBCS se
distinguen (identifican) mediante el distintivo FIPS (Federal Information Processing
Standard) proporcionado por el compilador como ampliaciones de IBM.

Listados de Programa COBOL


Los caracteres DBCS pueden aparecer en listados que se originan desde archivos
fuente que pueden contener DBCS y que se producen mediante sistemas que
tambin admiten este tipos de caracteres.
Los caracteres DBCS que aparecen en un listado de programa tienen como origen
un archivo fuente, un texto fuente generado por una instruccin COPY o un
mensaje del compilador COBOL.
Un listado que contenga caracteres DBCS debe disponer de salida a un archivo de
impresora que pueda procesar datos DBCS. Los listados que contienen caracteres
DBCS se manejan correctamente si una de las siguientes condiciones es
verdadera:
El archivo de impresora que especifica el parmetro PRTFILE del mandato
CRTCBLPGM se define con los atributos necesarios utilizando el mandato
CRTPRTF o CHGPRTF.
El archivo fuente puede contener datos DBCS utilizando el parmetro IGCDTA
del mandato CRTSRCPF. En este caso, el programa altera temporalmente el
valor existente del atributo para el archivo de impresora de salida.
El usuario ha especificado el atributo necesario para la impresora de salida utilizando el parmetro IGCDTA del mandato OVRPRT antes de compilar el programa.
Nota: El parmetro IGCDTA slo est disponible en sistemas DBCS, y no puede
definirse o visualizarse en sistemas que no sean DBCS. El usuario puede,
no obstante, crear objetos con atributos DBCS en un sistema que no sea
DBCS copindolos desde el sistema DBCS. Compruebe si se producen
posibles incompatibilidades si realiza esto.
El compilador puede utilizar caracteres del programa fuente como parmetros de
sustitucin en mensajes del comprobador de sintaxis y del compilador. El sistema
no comprueba ni edita los parmetros de sustitucin. Si no se especifican correctamente los caracteres DBCS, el sistema puede imprimir o visualizar defectuosamente partes de los mensajes.
Fin de Ampliacin de IBM

Apndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte

369

370

COBOL/400 Gua del usuario

Apndice G. Ejemplos de Procesos de Archivos AS/400


Este apndice contiene programas ejemplo que ilustran las tcnicas bsicas de
programacin asociadas con cada tipo de organizacin de archivos AS/400. Estos
ejemplos se han concebido para que sirvan nicamente como pautas de planificacin, as como para ilustrar las sentencias de entrada/salida que se necesitan
para determinados mtodos de acceso. Se utilizan de forma casual otras caractersticas COBOL (como por ejemplo la instruccin PERFORM). Los programas
que se indican son:

Creacin de archivos secuenciales


Actualizacin y ampliacin de archivos secuenciales
Creacin de archivos indexados
Actualizacin de archivos indexados
Creacin de archivos relativos
Actualizacin de archivos relativos
Recuperacin de archivos relativos.

Creacin de Archivos Secuenciales


Este programa crea un archivo secuencial con los registros de salarios de
empleados. Los registros de entrada se ordenan en orden ascendente por nmero
de empleado. El archivo de salida tiene el mismo orden. (Un archivo de salida
es un archivo que se ha abierto en modalidad de salida o en modalidad ampliada).

Copyright IBM Corp. 1994

371

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. CRTSEQ.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER.
IBM-AS4.
6 7 OBJECT-COMPUTER.
IBM-AS4.
7 8 SPECIAL-NAMES. CONSOLE IS TYPEWRITER.
8 9 INPUT-OUTPUT SECTION.
9 1 FILE-CONTROL.
1 11
SELECT INPUT-FILE ASSIGN TO DISK-FILEA
11 12
FILE STATUS IS INPUT-FILE-STATUS.
12 13
SELECT OUTPUT-FILE ASSIGN TO DISK-FILEB
13 14
FILE STATUS IS OUTPUT-FILE-STATUS.
14 15 DATA DIVISION.
15 16 FILE SECTION.
16 17 FD INPUT-FILE LABEL RECORDS STANDARD.
17 18 1 INPUT-RECORD.
18 19
5 INPUT-EMPLOYEE-NUMBER
PICTURE 9(6).
19 2
5 INPUT-EMPLOYEE-NAME
PICTURE X(28).
2 21
5 INPUT-EMPLOYEE-CODE
PICTURE 9.
21 22
5 INPUT-EMPLOYEE-SALARY
PICTURE 9(6)V99.
22 23 FD OUTPUT-FILE LABEL RECORDS STANDARD.
23 24 1 OUTPUT-RECORD.
24 25
5 OUTPUT-EMPLOYEE-NUMBER
PICTURE 9(6).
25 26
5 OUTPUT-EMPLOYEE-NAME
PICTURE X(28).
26 27
5 OUTPUT-EMPLOYEE-CODE
PICTURE 9.
27 28
5 OUTPUT-EMPLOYEE-SALARY
PICTURE 9(6)V99.
28 29 WORKING-STORAGE SECTION.
29 3 77 INPUT-FILE-STATUS
PICTURE XX.
3 31 77 OUTPUT-FILE-STATUS
PICTURE XX.
31 32 1 INPUTEND
PICTURE X VALUE SPACE.
32 33
88 THE-END-OF-INPUT
VALUE "E".
33 34 1 DISP-RECORD.
34 35
5 OP-NAME
PICTURE X(7).
35 36
5 FILLER
PICTURE XX VALUE SPACE.
36 37
5 FILE-NAME
PICTURE X(11).
37 38
5 FILLER
PICTURE XX VALUE SPACE.
38 39
5 FILLER
PICTURE X(14)
39 4
VALUE "FILE STATUS IS".
4 41
5 FILLER
PICTURE XX VALUE SPACE.
41 42
5 SK
PICTURE XX.
42 43 PROCEDURE DIVISION.
44 DECLARATIVES.
45 I-O-ERROR SECTION.
46
USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE,
47
OUTPUT-FILE.
48 I-O-ERROR-PARA.
49\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
5\ PARA ASEGURAR CONTROL SE DEVUELVEN DECLARATIVAS FICTICIAS\
51\ A ESTE PROGRAMA CUANDO SE PRODUCE ERROR DURANTE PROCESO \
52\ ARCHIVO. MANEJO ERRORES DESPUS DE CADA INSTRUCCIN E/S. \
53\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
54 END DECLARATIVES.
55 MAIN-PROGRAM SECTION.
56 OPEN-FILES.
43 57
OPEN INPUT INPUT-FILE
58
OUTPUT OUTPUT-FILE.
44 59
IF INPUT-FILE-STATUS NOT = ""
45 6
MOVE "OPEN" TO OP-NAME
46 61
MOVE "INPUT-FILE" TO FILE-NAME
47 62
MOVE INPUT-FILE-STATUS TO SK
48 63
PERFORM ERROR-OUT-1 THROUGH ERROR-OUT-2.
49 64
IF OUTPUT-FILE-STATUS NOT = ""
5 65
MOVE "OPEN" TO OP-NAME
51 66
MOVE "OUTPUT-FILE" TO FILE-NAME
52 67
MOVE OUTPUT-FILE-STATUS TO SK
53 68
PERFORM ERROR-OUT-1 THROUGH ERROR-OUT-2.
54 69
PERFORM BUILD-FILE UNTIL THE-END-OF-INPUT.
7 CLOSE-FILES.
55 71
CLOSE INPUT-FILE
72
OUTPUT-FILE.
56 73
STOP RUN.
74 BUILD-FILE.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 112 (Parte 1 de 2). Ejemplo de un Archivo Secuencial de Registros del Salario de un Empleado

372

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
57 75
READ INPUT-FILE INTO OUTPUT-RECORD
58 76
AT END SET THE-END-OF-INPUT TO TRUE.
59 77
IF INPUT-FILE-STATUS NOT = ""
6 78
MOVE "WRITE" TO OP-NAME
61 79
MOVE "OUTPUT-FILE" TO FILE-NAME
62 8
MOVE OUTPUT-FILE-STATUS TO SK
63 81
PERFORM ERROR-OUT-1 THROUGH ERROR-OUT-2
64 82
GO TO CLOSE-FILES.
65 83
WRITE OUTPUT-RECORD.
66 84
IF OUTPUT-FILE-STATUS NOT = ""
67 85
MOVE "WRITE" TO OP-NAME
68 86
MOVE "OUTPUT-FILE" TO FILE-NAME
69 87
MOVE OUTPUT-FILE-STATUS TO SK
7 88
PERFORM ERROR-OUT-1 THROUGH ERROR-OUT-2
71 89
GO TO CLOSE-FILES.
9 ERROR-OUT-1.
72 91
DISPLAY "FILE PROCESSING ERROR" UPON TYPEWRITER.
73 92
DISPLAY DISP-RECORD UPON TYPEWRITER.
74 93
CLOSE INPUT-FILE
94
OUTPUT-FILE.
75 95
STOP RUN.
96 ERROR-OUT-2.
97
EXIT.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
16 IDMEN: LBL65 GRAVEDAD: NUMSEC: 17
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\
22 IDMEN: LBL65 GRAVEDAD: NUMSEC: 23
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'OUTPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\
43 IDMEN: LBL335 GRAVEDAD: NUMSEC: 54
Mensaje . . . . :
Prrafo vaco o seccin precede el prrafo
o seccin 'END DECLARATIVES'
\ \ \ \ \

NOMCOPIA

FECH/CAM

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 ledos. . . . . . . :


97
Registros copia ledos . . . . . . . :

Miembros copia procesados . . . . . :

Errores secuencia . . . . . . . . . :

Mensaje gravedad ms alta enviado . :

LBL91 Programa CRTSEQ creado en biblioteca XMPLIB.


\ \ \ \ \

F I N

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

Actualizacin y Ampliacin de Archivos Secuenciales


Este programa actualiza y ampla el archivo que el programa CRTSEQ ha creado.
Se leen el INPUT-FILE y el MASTER-FILE. Cuando se encuentra una coincidencia
entre el INPUT-EMPLOYEE-NUMBER y el MST-EMPLOYEE-NUMBER, el registro de entrada
sustituye al registro original. Cuando se procesa MASTER-FILE, se aaden nuevos
registros de empleados al final del archivo.

Apndice G. Ejemplos de Proceso de Archivos

373

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. UPDTSEQ.
3 3 ENVIRONMENT DIVISION.
4 4 CONFIGURATION SECTION.
5 5 SOURCE-COMPUTER. IBM-AS4.
6 6 OBJECT-COMPUTER. IBM-AS4.
7 7 INPUT-OUTPUT SECTION.
8 8 FILE-CONTROL.
9 9
SELECT INPUT-FILE ASSIGN TO DISK-FILES
1 1
FILE STATUS IS INPUT-FILE-STATUS. .A/
11 11
SELECT MASTER-FILE ASSIGN TO DISK-MSTFILEB
12 12
FILE STATUS IS MASTER-FILE-STATUS. .B/
13
13 14 DATA DIVISION.
14 15 FILE SECTION.
15 16 FD INPUT-FILE LABEL RECORDS STANDARD.
16 17 1 INPUT-RECORD.
17 18
5 INPUT-EMPLOYEE-NUMBER
PICTURE 9(6).
18 19
5 INPUT-EMPLOYEE-NAME
PICTURE X(28).
19 2
5 INPUT-EMPLOYEE-CODE
PICTURE 9.
2 21
5 INPUT-EMPLOYEE-SALARY
PICTURE 9(6)V99.
21 22 FD MASTER-FILE LABEL RECORDS STANDARD.
22 23 1 MASTER-RECORD.
23 24
5 MST-EMPLOYEE-NUMBER
PICTURE 9(6).
24 25
5 MST-EMPLOYEE-NAME
PICTURE X(28).
25 26
5 MST-EMPLOYEE-CODE
PICTURE 9.
26 27
5 MST-EMPLOYEE-SALARY
PICTURE 9(6)V99.
27 28 WORKING-STORAGE SECTION.
28 29 77 INPUT-FILE-STATUS
PICTURE XX.
29 3 77 MASTER-FILE-STATUS
PICTURE XX.
3 31 1 INPUTEND
PICTURE X VALUE SPACE.
31 32
88 THE-END-OF-INPUT
VALUE "E".
32 33 1 MASTEREND
PICTURE X VALUE SPACE.
33 34
88 THE-END-OF-MASTER
VALUE "E".
34 35 1 ERROR-INFO.
35 36
5 OP-NAME
PICTURE X(12).
36 37
5 FILLER
PICTURE XX VALUE SPACE.
37 38
5 FILE-NAME
PICTURE X(11).
38 39
5 FILLER
PICTURE XX VALUE SPACE.
39 4
5 FILLER
PICTURE X(14)
4 41
VALUE "FILE STATUS IS".
41 42
5 FILLER
PICTURE XX VALUE SPACE.
42 43
5 SK
PICTURE XX.
43 44 PROCEDURE DIVISION.
45 DECLARATIVES.
46 INPUT-FILE-ERROR SECTION.
47
USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE. .C/
48 INPUT-FILE-ERROR-PARA.
44 49
MOVE INPUT-FILE-STATUS TO SK.
45 5
MOVE "INPUT-FILE" TO FILE-NAME.
46 51
DISPLAY "FILE PROCESSING ERROR".
47 52
DISPLAY ERROR-INFO.
48 53
DISPLAY "PROCESSING TERMINATED DUE TO I-O ERROR".
49 54
STOP RUN.
55 I-O-FILE-ERROR SECTION.
56
USE AFTER STANDARD ERROR PROCEDURE ON MASTER-FILE. .D/
57 MASTER-FILE-ERROR-PARA.
5 58
MOVE MASTER-FILE-STATUS TO SK.
51 59
MOVE "MASTER-FILE" TO FILE-NAME.
52 6
DISPLAY "FILE PROCESSING ERROR".
53 61
DISPLAY ERROR-INFO.
54 62
DISPLAY "PROCESSING TERMINATED DUE TO I-O ERROR".
55 63
STOP RUN.
64 END DECLARATIVES.
65 MAIN-PROGRAM SECTION.
66 OPEN-FILES.
56 67
MOVE "OPEN" TO OP-NAME.
57 68
OPEN INPUT INPUT-FILE
69
I-O
MASTER-FILE.
7 PROCESSING-LOGIC.
58 71
PERFORM READ-INPUT-FILE.
59 72
PERFORM READ-MASTER-FILE.
6 73
PERFORM PROCESS-FILES UNTIL THE-END-OF-INPUT.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 113 (Parte 1 de 2). Ejemplo de un Programa de Actualizacin de Archivo Secuencial

374

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
74 CLOSE-FILES.
61 75
MOVE "CLOSE" TO OP-NAME.
62 76
CLOSE MASTER-FILE
77
INPUT-FILE.
63 78
STOP RUN.
79 READ-INPUT-FILE.
64 8
MOVE "READ" TO OP-NAME.
65 81
READ INPUT-FILE
66 82
AT END SET THE-END-OF-INPUT TO TRUE.
83 READ-MASTER-FILE.
67 84
MOVE "READ" TO OP-NAME.
68 85
READ MASTER-FILE
86
AT END
69 87
SET THE-END-OF-MASTER TO TRUE
7 88
MOVE "AT END CLOSE" TO OP-NAME
71 89
CLOSE MASTER-FILE
72 9
MOVE "OPEN EXTEND" TO OP-NAME
73 91
OPEN EXTEND MASTER-FILE.
92 PROCESS-FILES.
74 93
IF THE-END-OF-MASTER
75 94
WRITE MASTER-RECORD FROM INPUT-RECORD
76 95
PERFORM READ-INPUT-FILE
96
ELSE
77 97
IF MST-EMPLOYEE-NUMBER LESS THAN INPUT-EMPLOYEE-NUMBER
78 98
PERFORM READ-MASTER-FILE
99
ELSE
79 1
IF MST-EMPLOYEE-NUMBER = INPUT-EMPLOYEE-NUMBER
8 11
MOVE "REWRITE" TO OP-NAME
81 12
REWRITE MASTER-RECORD FROM INPUT-RECORD
82 13
PERFORM READ-INPUT-FILE
83 14
PERFORM READ-MASTER-FILE
15
ELSE
84 16
DISPLAY "ERROR RECORD -> ", INPUT-EMPLOYEE-NUMBER
85 17
PERFORM READ-INPUT-FILE.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
15 IDMEN: LBL65 GRAVEDAD: NUMSEC: 16
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

NOMCOPIA

FECH/CAM

F I N

Total
Info(-4)
Aviso(5-19)
1
1

Registros fuente ledos. . . . . . .


Registros copia ledos . . . . . . .
Miembros copia procesados . . . . .
Errores secuencia . . . . . . . . .
Mensaje gravedad ms alta enviado .
LBL91 Programa UPDTSEQ creado
\ \ \ \ \

D E
M E N S A J E S
\ \ \ \ \
Resumen de mensajes
Error(2-29)
Grave(3-39)
Terminal(4-99)

:
17
:

en biblioteca XMPLIB.

F I N

D E

C O M P I L A C I N \ \ \ \ \

Figura 113 (Parte 2 de 2). Ejemplo de un Programa de Actualizacin de Archivo Secuencial

El ejemplo de la Figura 113 en la pgina 374 incluye:


.A/

Una clusula FILE STATUS para que el programa registre el estado de las
solicitudes de E/S ms recientes relacionadas con INPUT-FILE.

.B/

Una clusula FILE STATUS para que el programa registra el estado de las
solicitudes de E/S ms recientes relacionadas con MASTER-FILE.

.C/

Un procedimiento USE que se ejecuta cuando se produce un error de E/S


durante el proceso del INPUT-FILE.

.D/

Un procedimiento USE que se ejecuta cuando se produce un error de E/S


durante el proceso de MASTER-FILE.

Apndice G. Ejemplos de Proceso de Archivos

375

Los valores de estado del archivo y los procedimientos USE juegan un papel muy
importante en el manejo de errores. Para obtener ms informacin, consulte el
Captulo 6, Manejo de Errores y Excepciones COBOL/400.

Creacin de Archivos Indexados


Un archivo indexado es un archivo que registra la clave y la posicin de cada
registro en una parte separada del archivo llamada ndice.
Este programa crea un archivo indexado de registros de resumen para depsitos
de banco. La clave dentro de cada registro del archivo indexado es INDEX-KEY
(nmero de cuenta de depsito); los registros de entrada se ordenan en secuencia
ascendente segn esta clave. Los registros se leen del archivo de entrada y se
transfieren al rea de registros del archivo indexado. Entonces se graba el registro
del archivo indexado.

376

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. CRTIND.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER. IBM-AS4.
6 7 OBJECT-COMPUTER. IBM-AS4.
7 8 INPUT-OUTPUT SECTION.
8 9 FILE-CONTROL.
9 1
SELECT INDEXED-FILE ASSIGN TO DISK-INDEXFILE
1 11
ORGANIZATION IS INDEXED
11 12
ACCESS IS SEQUENTIAL
12 13
RECORD KEY IS INDEX-KEY
13 14
FILE STATUS IS INDEXED-FILE-STATUS.
14 15
SELECT INPUT-FILE ASSIGN TO DISK-FILEG
15 16
FILE STATUS IS INPUT-FILE-STATUS.
16 17 DATA DIVISION.
17 18 FILE SECTION.
18 19 FD INDEXED-FILE LABEL RECORDS STANDARD.
19 2 1 INDEX-RECORD.
2 21
5 INDEX-KEY
PICTURE X(1).
21 22
5 INDEX-FLD1
PICTURE X(1).
22 23
5 INDEX-NAME
PICTURE X(2).
23 24
5 INDEX-BAL
PICTURE S9(5)V99.
24 25 FD INPUT-FILE LABEL RECORDS STANDARD.
25 26 1 INPUT-RECORD.
26 27
5 INPUT-KEY
PICTURE X(1).
27 28
5 INPUT-NAME
PICTURE X(2).
28 29
5 INPUT-BAL
PICTURE S9(5)V99.
29 3 WORKING-STORAGE SECTION.
3 31 77 INDEXED-FILE-STATUS
PICTURE XX.
31 32 77 INPUT-FILE-STATUS
PICTURE XX.
32 33 77 OP-NAME
PICTURE X(7).
33 34 1 INPUTEND
PICTURE X VALUE SPACES.
34 35
88 THE-END-OF-INPUT
VALUE "E".
35 36 1 ERRORFLAG
PICTURE X VALUE SPACES.
36 37
88 ERROR-OCCURRED
VALUE "1".
37 38 PROCEDURE DIVISION.
39 DECLARATIVES.
4 INPUT-ERROR SECTION.
41
USE AFTER STANDARD ERROR PROCEDURE ON INPUT.
42 INPUT-ERROR-PARA.
38 43
DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR INPUT-FILE ".
39 44
DISPLAY "FILE STATUS IS ", INPUT-FILE-STATUS.
4 45
SET ERROR-OCCURRED TO TRUE.
46 OUTPUT-ERROR SECTION.
47
USE AFTER STANDARD ERROR PROCEDURE ON OUTPUT.
48 OUTPUT-ERROR-PARA.
41 49
DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR INDEXED-FILE ".
42 5
DISPLAY "FILE STATUS IS ", INDEXED-FILE-STATUS.
43 51
SET ERROR-OCCURRED TO TRUE.
52 END DECLARATIVES.
53 MAIN-PROCESSING SECTION.
54 MAIN-PROCEDURE.
44 55
MOVE "OPEN" TO OP-NAME.
45 56
OPEN INPUT INPUT-FILE
57
OUTPUT INDEXED-FILE.
46 58
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
48 59
PERFORM READ-INPUT-FILE.
49 6
PERFORM LOAD-INDEXED-FILE THRU READ-INPUT-FILE
61
UNTIL THE-END-OF-INPUT.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 114 (Parte 1 de 2). Ejemplo de un Programa de Archivo Indexado

Apndice G. Ejemplos de Proceso de Archivos

377

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
5 62
MOVE "CLOSE" TO OP-NAME.
51 63
CLOSE INPUT-FILE
64
INDEXED-FILE.
52 65
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
54 66
STOP RUN.
67 LOAD-INDEXED-FILE.
55 68
MOVE INPUT-KEY TO INDEX-KEY.
56 69
MOVE INPUT-NAME TO INDEX-NAME.
57 7
MOVE INPUT-BAL TO INDEX-BAL.
58 71
MOVE SPACES TO INDEX-FLD1.
59 72
MOVE "WRITE" TO OP-NAME.
6 73
WRITE INDEX-RECORD
74
INVALID KEY
61 75
DISPLAY "WRITE FAILED FOR KEY ", INDEX-KEY.
62 76
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
77 READ-INPUT-FILE.
64 78
MOVE "READ" TO OP-NAME.
65 79
READ INPUT-FILE
66 8
AT END SET THE-END-OF-INPUT TO TRUE.
67 81
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
82 ERROR-TERMINATION.
69 83
DISPLAY "I-O ERROR OCCURRED - PROCESS TERMINATING".
7 84
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
18 IDMEN: LBL65 GRAVEDAD: NUMSEC: 19
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INDEXED-FILE'
se realizar por medio del cdigo generado por compilador.
\
24 IDMEN: LBL65 GRAVEDAD: NUMSEC: 25
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

NOMCOPIA

FECH/CAM

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 ledos. . . . . . . :


84
Registros copia ledos . . . . . . . :

Miembros copia procesados . . . . . :

Errores secuencia . . . . . . . . . :

Mensaje gravedad ms alta enviado . :

LBL91 Programa CRTIND creado en biblioteca XMPLIB.


\ \ \ \ \

F I N

F I N

D E

C O M P I L A C I N \ \ \ \ \

Figura 114 (Parte 2 de 2). Ejemplo de un Programa de Archivo Indexado

Actualizacin de Archivos Indexados


Este programa actualiza, mediante el acceso dinmico, el archivo indexado creado
en el programa CRTIND.
Los registros de entrada tienen la clave para el registro, el nmero de depsito y la
cantidad de la transaccin.
Cuando el programa lee el registro de entrada, comprueba:
Si es un registro de transacciones (en cuyo caso se llenan todos los campos
del registro)
Si es un registro que solicita recuperacin secuencial de una clase genrica
especfica (en cuyo caso slo el campo INPUT-GEN-FLD del registro de entrada
contendr datos).
El acceso al azar se utiliza para actualizar e imprimir los registros de las transacciones. El acceso secuencial se utiliza para la recuperacin e impresin de todos
los registros dentro de una clase genrica.

378

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. UPDTIND.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER. IBM-AS4.
6 7 OBJECT-COMPUTER. IBM-AS4.
7 8 INPUT-OUTPUT SECTION.
8 9 FILE-CONTROL.
9 1
SELECT MASTER-FILE ASSIGN TO DISK-INDXFILE
1 11
ORGANIZATION IS INDEXED
11 12
ACCESS IS DYNAMIC
12 13
RECORD KEY IS MASTER-KEY
13 14
FILE STATUS IS MASTER-FILE-STATUS.
14 15
SELECT INPUT-FILE ASSIGN TO DISK-FILEH
15 16
FILE STATUS IS INPUT-FILE-STATUS.
16 17
SELECT PRINT-FILE ASSIGN TO PRINTER-QSYSPRT
17 18
FILE STATUS IS PRINT-FILE-STATUS.
18 19 DATA DIVISION.
19 2 FILE SECTION.
2 21 FD MASTER-FILE LABEL RECORDS STANDARD.
21 22 1 MASTER-RECORD.
22 23
5 MASTER-KEY.
23 24
1
MASTER-GEN-FLD
PICTURE X(5).
24 25
1
MASTER-DET-FLD
PICTURE X(5).
25 26
5 MASTER-FLD1
PICTURE X(1).
26 27
5 MASTER-NAME
PICTURE X(2).
27 28
5 MASTER-BAL
PICTURE S9(5)V99.
28 29 FD INPUT-FILE LABEL RECORDS STANDARD.
29 3 1 INPUT-REC.
3 31
5 INPUT-KEY.
31 32
1 INPUT-GEN-FLD
PICTURE X(5).
32 33
1 INPUT-DET-FLD
PICTURE X(5).
33 34
5 INPUT-NAME
PICTURE X(2).
34 35
5 INPUT-AMT
PICTURE S9(5)V99.
35 36 FD PRINT-FILE LABEL RECORDS OMITTED
36 37
LINAGE 12 LINES FOOTING AT 9.
37 38 1 PRINT-RECORD-1.
38 39
5 PRINT-KEY
PICTURE X(1).
39 4
5 FILLER
PICTURE X(5).
4 41
5 PRINT-NAME
PICTURE X(2).
41 42
5 FILLER
PICTURE X(5).
42 43
5 PRINT-BAL
PICTURE $$$,$$9.99-.
43 44
5 FILLER
PICTURE X(7).
44 45
5 PRINT-AMT
PICTURE $$$,$$9.99-.
45 46
5 FILLER
PICTURE X(5).
46 47
5 PRINT-NEW-BAL
PICTURE $$$,$$9.99-.
47 48 1 PRINT-RECORD-2
PICTURE X(89).
48 49 WORKING-STORAGE SECTION.
49 5 77 MASTER-FILE-STATUS
PICTURE XX.
5 51 77 INPUT-FILE-STATUS
PICTURE XX.
51 52 77 PRINT-FILE-STATUS
PICTURE XX.
52 53 77 LINES-TO-FOOT
PICTURE 99.
53 54 1 PAGE-HEAD.
54 55
5 FILLER
PICTURE X(38) VALUE SPACES.
55 56
5 FILLER
PICTURE X(13) VALUE "UPDATE REPORT".
56 57
5 FILLER
PICTURE X(38) VALUE SPACES.
57 58 1 COLUMN-HEAD.
58 59
5 FILLER
PICTURE X(6) VALUE "KEY ID".
59 6
5 FILLER
PICTURE X(9) VALUE SPACES.
6 61
5 FILLER
PICTURE X(4) VALUE "NAME".
61 62
5 FILLER
PICTURE X(21) VALUE SPACES.
62 63
5 FILLER
PICTURE X(11) VALUE "CUR BALANCE".
63 64
5 FILLER
PICTURE X(6) VALUE SPACES.
64 65
5 FILLER
PICTURE X(13) VALUE "UPDATE AMOUNT".
65 66
5 FILLER
PICTURE X(4) VALUE SPACES.
66 67
5 FILLER
PICTURE X(11) VALUE "NEW BALANCE".
67 68
5 FILLER
PICTURE X(4) VALUE SPACES.
68 69 1 PAGE-FOOT.
69 7
5 FILLER
PICTURE X(81) VALUE SPACES.
7 71
5 FILLER
PICTURE A(6)
VALUE "PAGE ".
71 72
5 PG-NUMBER
PICTURE 99
VALUE .
73
72 74 1 INPUTEND
PICTURE X VALUE SPACE.
73 75
88 THE-END-OF-INPUT
VALUE "E".

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 115 (Parte 1 de 4). Ejemplo de un Programa de Actualizacin de Archivo Indexado

Apndice G. Ejemplos de Proceso de Archivos

379

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
74 76 1 ERRORFLAG
PICTURE X VALUE SPACE.
75 77
88 ERROR-OCCURRED
VALUE "1".
76 78 1 ERROR-DATA.
77 79
5 FILLER
PICTURE X(21)
78 8
VALUE "STATEMENT FAILING IS ".
79 81
5 OP-NAME
PICTURE X(9).
8 82
5 FILLER
PICTURE X(16)
81 83
VALUE "FILE STATUS IS".
82 84
5 STATUS-VALUE
PICTURE XX.
83 85 1 INPUT-MESSAGE.
84 86
5 FILLER
PICTURE X(3)
85 87
VALUE "UNEXPECTED ERROR ON INPUT-FILE" .
86 88 1 I-O-MESSAGE.
87 89
5 FILLER
PICTURE X(31)
88 9
VALUE "UNEXPECTED ERROR ON MASTER-FILE" .
89 91 1 OUTPUT-MESSAGE.
9 92
5 FILLER
PICTURE X(3)
91 93
VALUE "UNEXPECTED ERROR ON PRINT-FILE" .
92 94 PROCEDURE DIVISION.
95 DECLARATIVES.
96 INPUT-ERROR SECTION.
97
USE AFTER STANDARD ERROR PROCEDURE ON INPUT.
98 INPUT-ERROR-PARA.
93 99
DISPLAY INPUT-MESSAGE.
94 1
MOVE INPUT-FILE-STATUS TO STATUS-VALUE.
95 11
DISPLAY ERROR-DATA.
96 12
SET ERROR-OCCURRED TO TRUE.
13 I-O-ERROR SECTION.
14
USE AFTER STANDARD ERROR PROCEDURE ON I-O.
15 I-O-ERROR-PARA.
97 16
DISPLAY I-O-MESSAGE.
98 17
MOVE MASTER-FILE-STATUS TO STATUS-VALUE.
99 18
DISPLAY ERROR-DATA.
1 19
SET ERROR-OCCURRED TO TRUE.
11 OUTPUT-ERROR SECTION.
111
USE AFTER STANDARD ERROR PROCEDURE ON OUTPUT.
112 OUTPUT-ERROR-PARA.
11 113
DISPLAY OUTPUT-MESSAGE.
12 114
MOVE PRINT-FILE-STATUS TO STATUS-VALUE.
13 115
DISPLAY ERROR-DATA.
14 116
SET ERROR-OCCURRED TO TRUE.
117 END DECLARATIVES.
118 MAIN-PROCESSING SECTION.
119 MAIN-PROCEDURE.
15 12
MOVE "OPEN" TO OP-NAME.
16 121
OPEN INPUT INPUT-FILE
122
I-O MASTER-FILE
123
OUTPUT PRINT-FILE.
17 124
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
19 125
PERFORM PAGE-START.
11 126
PERFORM READ-INPUT-FILE.
111 127
PERFORM PROCESS-DATA THRU READ-INPUT-FILE
128
UNTIL THE-END-OF-INPUT.
112 129
PERFORM PAGE-END.
113 13
MOVE "CLOSE" TO OP-NAME.
114 131
CLOSE INPUT-FILE
132
MASTER-FILE
133
PRINT-FILE.
115 134
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
117 135
STOP RUN.
136
137 PROCESS-DATA.
118 138
IF INPUT-DET-FLD EQUAL SPACES
119 139
PERFORM INIT-SEQUENTIAL-PROCESS
14
ELSE
12 141
PERFORM DYNAMIC-PROCESS.
142 READ-INPUT-FILE.
121 143
MOVE "READ" TO OP-NAME.
122 144
READ INPUT-FILE
123 145
AT END SET THE-END-OF-INPUT TO TRUE.
124 146
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
147
148 INIT-SEQUENTIAL-PROCESS.

NOMCOPIA

FECH/CAM

Figura 115 (Parte 2 de 4). Ejemplo de un Programa de Actualizacin de Archivo Indexado

380

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
126 149
MOVE INPUT-GEN-FLD TO MASTER-GEN-FLD.
127 15
MOVE "START" TO OP-NAME.
128 151
START MASTER-FILE
152
KEY IS NOT LESS THAN MASTER-GEN-FLD
153
INVALID KEY
129 154
DISPLAY "MASTER-FILE START FAILED: INVALID KEY ",
155
MASTER-GEN-FLD
13 156
MOVE HIGH-VALUE TO MASTER-GEN-FLD.
131 157
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
133 158
PERFORM SEQUENTIAL-PROCESS
159
UNTIL INPUT-GEN-FLD NOT EQUAL MASTER-GEN-FLD.
16
161 SEQUENTIAL-PROCESS.
134 162
MOVE "READ NEXT" TO OP-NAME.
135 163
READ MASTER-FILE NEXT RECORD
136 164
AT END MOVE HIGH-VALUE TO MASTER-GEN-FLD.
137 165
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
139 166
IF INPUT-GEN-FLD EQUAL MASTER-GEN-FLD
14 167
MOVE MASTER-KEY TO PRINT-KEY
141 168
MOVE MASTER-NAME TO PRINT-NAME
142 169
MOVE MASTER-BAL TO PRINT-NEW-BAL
143 17
PERFORM PRINT-DETAIL.
171
172 DYNAMIC-PROCESS.
144 173
MOVE INPUT-KEY TO MASTER-KEY.
145 174
MOVE "READ" TO OP-NAME.
146 175
READ MASTER-FILE
176
INVALID KEY
147 177
DISPLAY "MASTER-FILE READ FAILED: INVALID KEY ",
178
MASTER-KEY
148 179
MOVE HIGH-VALUE TO MASTER-GEN-FLD.
149 18
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
151 181
IF INPUT-GEN-FLD EQUAL MASTER-GEN-FLD
152 182
MOVE MASTER-KEY TO PRINT-KEY
153 183
MOVE MASTER-NAME TO PRINT-NAME
154 184
MOVE MASTER-BAL TO PRINT-BAL
155 185
MOVE INPUT-AMT TO PRINT-AMT
156 186
ADD INPUT-AMT TO MASTER-BAL
157 187
MOVE MASTER-BAL TO PRINT-NEW-BAL
158 188
PERFORM PRINT-DETAIL
159 189
MOVE "REWRITE" TO OP-NAME
16 19
REWRITE MASTER-RECORD
191
INVALID KEY
161 192
DISPLAY "MASTER-FILE REWRITE FAILED: INVALID KEY ",
193
MASTER-KEY
162 194
MOVE HIGH-VALUE TO MASTER-GEN-FLD.
163 195
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
196 PRINT-DETAIL.
165 197
MOVE "WRITE" TO OP-NAME.
166 198
WRITE PRINT-RECORD-1
199
AT END-OF-PAGE
167 2
PERFORM PAGE-END THROUGH PAGE-START.
168 21
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
17 22
MOVE SPACES TO PRINT-RECORD-1.
23
24 PAGE-END.
171 25
MOVE "WRITE" TO OP-NAME.
172 26
ADD 1 TO PG-NUMBER.
173 27
SUBTRACT LINAGE-COUNTER OF PRINT-FILE FROM 12
28
GIVING LINES-TO-FOOT.
174 29
MOVE SPACES TO PRINT-RECORD-1.
175 21
WRITE PRINT-RECORD-1
211
AFTER ADVANCING LINES-TO-FOOT.
176 212
WRITE PRINT-RECORD-2 FROM PAGE-FOOT
213
BEFORE ADVANCING PAGE.
177 214
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.

NOMCOPIA

FECH/CAM

Figura 115 (Parte 3 de 4). Ejemplo de un Programa de Actualizacin de Archivo Indexado

Apndice G. Ejemplos de Proceso de Archivos

381

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
215 PAGE-START.
179 216
WRITE PRINT-RECORD-2 FROM PAGE-HEAD
217
AFTER ADVANCING LINES.
18 218
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
182 219
MOVE SPACES TO PRINT-RECORD-2.
183 22
WRITE PRINT-RECORD-2 FROM COLUMN-HEAD
221
AFTER ADVANCING 1 LINE.
184 222
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
186 223
MOVE SPACES TO PRINT-RECORD-2.
224 ERROR-TERMINATION.
187 225
DISPLAY "PROCESS TERMINATING ABNORMALLY".
188 226
STOP RUN.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \ 5763CB1 V3RM5
INST
\
28 IDMEN: LBL65 GRAVEDAD: NUMSEC: 29
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

Mensajes COBOL AS/4

F I N

Total
Info(-4)
Aviso(5-19)
1
1

Registros fuente ledos. . . . . . .


Registros copia ledos . . . . . . .
Miembros copia procesados . . . . .
Errores secuencia . . . . . . . . .
Mensaje gravedad ms alta enviado .
LBL91 Programa UPDTIND creado
\ \ \ \ \

FECH/CAM

D E
M E N S A J E S
\ \ \ \ \
Resumen de mensajes
Error(2-29)
Grave(3-39)
Terminal(4-99)

:
226
:

en biblioteca XMPLIB.

F I N

D E

C O M P I L A C I N \ \ \ \ \

Figura 115 (Parte 4 de 4). Ejemplo de un Programa de Actualizacin de Archivo Indexado

Creacin de Archivo Relativos


Este programa crea un archivo relativo de registros de resumen de ventas utilizando acceso secuencial. Cada registro contiene un resumen de cinco aos de
ventas en unidades y pesetas de una semana del ao; en total hay 52 registros en
el archivo, que representa cada uno una semana.
Cada registro de entrada contiene un resumen de las ventas de una semana. Los
registros de la primera semana de los cinco ltimos aos (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
aos. As pues, cinco registros de entrada llenan un registro de salida.
RELATIVE KEY para RELATIVE-FILE no se especifica porque no es necesario para el
acceso secuencial, a no ser que se utilice la instruccin START. (Sin embargo,
para actualizar, la clave es INPUT-WEEK.)

382

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
CRTREL.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER.
IBM-AS4.
6 7 OBJECT-COMPUTER.
IBM-AS4.
7 8 SPECIAL-NAMES. REQUESTOR IS REQUESTOR.
8 9 FILE-CONTROL.
9 1
SELECT RELATIVE-FILE ASSIGN TO DISK-FILED
1 11
ORGANIZATION IS RELATIVE
11 12
ACCESS IS SEQUENTIAL
12 13
FILE STATUS RELATIVE-FILE-STATUS.
13 14
SELECT INPUT-FILE ASSIGN TO DISK-FILEC
14 15
FILE STATUS INPUT-FILE-STATUS.
16
15 17 DATA DIVISION.
16 18 FILE SECTION.
17 19 FD RELATIVE-FILE LABEL RECORDS ARE STANDARD.
18 2 1 RELATIVE-RECORD-1.
19 21
5 RELATIVE-RECORD OCCURS 5 TIMES INDEXED BY REL-INDEX.
2 22
1 RELATIVE-YEAR
PICTURE 99.
21 23
1 RELATIVE-WEEK
PICTURE 99.
22 24
1 RELATIVE-UNIT-SALES
PICTURE S9(6).
23 25
1 RELATIVE-DOLLAR-SALES PICTURE S9(9)V99.
24 26 FD INPUT-FILE LABEL RECORDS STANDARD.
25 27 1 INPUT-RECORD.
26 28
5 INPUT-YEAR
PICTURE 99.
27 29
5 INPUT-WEEK
PICTURE 99.
28 3
5 INPUT-UNIT-SALES
PICTURE S9(6).
29 31
5 INPUT-DOLLAR-SALES
PICTURE S9(9)V99.
3 32 WORKING-STORAGE SECTION.
31 33 77 INPUT-FILE-STATUS
PICTURE XX.
32 34 77 RELATIVE-FILE-STATUS
PICTURE XX.
33 35 1 WORK-RECORD.
34 36
5 WORK-YEAR
PICTURE 99 VALUE .
35 37
5 WORK-WEEK
PICTURE 99.
36 38
5 WORK-UNIT-SALES
PICTURE S9(6).
37 39
5 WORK-DOLLAR-SALES
PICTURE S9(9)V99.
38 4 1 ERROR-INFO.
39 41
5 OP-NAME
PICTURE X(5).
4 42
5 FILLER
PICTURE X(1)
41 43
VALUE " ERROR ON ".
42 44
5 FILE-NAME
PICTURE X(13).
43 45
5 FILLER
PICTURE X(16)
44 46
VALUE " FILE STATUS IS ".
45 47
5 STATUS-VALUE
PICTURE XX.
46 48 1 ERROR-FLAG
PICTURE X VALUE SPACE.
47 49
88 ERROR-OCCURRED
VALUE "1".
48 5 1 INPUTEND
PICTURE X VALUE SPACE.
49 51
88 THE-END-OF-INPUT
VALUE "E".
52
5 53 PROCEDURE DIVISION.
54 DECLARATIVES.
55
56 INP-FILE-ERROR SECTION.
57
USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE.
58 INPUT-FILE-ERROR.
51 59
MOVE "INPUT-FILE" TO FILE-NAME.
52 6
MOVE INPUT-FILE-STATUS TO STATUS-VALUE.
53 61
SET ERROR-OCCURRED TO TRUE.
62 REL-FILE-ERROR SECTION.
63
USE AFTER STANDARD ERROR PROCEDURE ON RELATIVE-FILE.
64 RELATIVE-FILE-ERROR.
54 65
MOVE "RELATIVE-FILE" TO FILE-NAME.
55 66
MOVE RELATIVE-FILE-STATUS TO STATUS-VALUE.
56 67
SET ERROR-OCCURRED TO TRUE.
68 END DECLARATIVES.
69 BEGIN-PROCESSING SECTION.
7 PROCESSING-CONTROL.
57 71
MOVE "OPEN" TO OP-NAME.
58 72
OPEN INPUT INPUT-FILE
73
OUTPUT RELATIVE-FILE.
59 74
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
61 75
SET REL-INDEX TO 1.
62 76
PERFORM READ-INPUT-FILE.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 116 (Parte 1 de 2). Ejemplo de un Programa de Archivo Relativo

Apndice G. Ejemplos de Proceso de Archivos

383

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA
FECH/CAM
63 77
PERFORM PROCESS-DATA THRU READ-INPUT-FILE
78
UNTIL THE-END-OF-INPUT.
64 79
CLOSE RELATIVE-FILE INPUT-FILE.
65 8
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
67 81
STOP RUN.
82 ERROR-TERMINATION.
68 83
DISPLAY ERROR-INFO UPON REQUESTOR.
69 84
DISPLAY "PROCESSING TERMINATED DUE TO I-O ERROR"
85
UPON REQUESTOR.
7 86
STOP RUN.
87 PROCESS-DATA.
71 88
MOVE INPUT-RECORD TO RELATIVE-RECORD (REL-INDEX).
72 89
IF REL-INDEX NOT = 5
73 9
SET REL-INDEX UP BY 1
91
ELSE
74 92
SET REL-INDEX TO 1
75 93
PERFORM RELATIVE-FILE-WRITE.
94 READ-INPUT-FILE.
76 95
MOVE "READ" TO OP-NAME.
77 96
READ INPUT-FILE
78 97
AT END SET THE-END-OF-INPUT TO TRUE.
79 98
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
99 RELATIVE-FILE-WRITE.
81 1
MOVE "WRITE" TO OP-NAME.
82 11
WRITE RELATIVE-RECORD-1.
83 12
IF ERROR-OCCURRED GO TO ERROR-TERMINATION.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \ 5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
IDMEN: LBL27 GRAVEDAD: 1 NUMSEC:
Mensaje . . . . :
No se encuentra I-O SECTION. Se asume la presente
\
17 IDMEN: LBL65 GRAVEDAD: NUMSEC: 19
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'RELATIVE-FILE'
se realizar por medio del cdigo generado por compilador.
\
24 IDMEN: LBL65 GRAVEDAD: NUMSEC: 26
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

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 ledos. . . . . . . :


12
Registros copia ledos . . . . . . . :

Miembros copia procesados . . . . . :

Errores secuencia . . . . . . . . . :

Mensaje gravedad ms alta enviado . :


1
LBL91 Programa CRTREL creado en biblioteca XMPLIB.
\ \ \ \ \

F I N

F I N

D E

C O M P I L A C I N \ \ \ \ \

Figura 116 (Parte 2 de 2). Ejemplo de un Programa de Archivo Relativo

Actualizacin de Archivos Relativos


Este programa utiliza el acceso secuencial para actualizar el archivo de registros
de resumen de ventas que se ha creado en el programa CRTREL. El programa de
actualizacin aade un registro para cada ao nuevo y elimina los registros del ao
ms antiguo desde RELATIVE-FILE.
El registro de entrada representa el registro de resumen de ventas para una
semana del ao anterior. RELATIVE KEY para RELATIVE-FILE es el registro de
entrada como INPUT-WEEK. RELATIVE KEY se utiliza para comprobar que el
registro se ha grabado correctamente.

384

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. UPDTREL.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER.
IBM-AS4.
6 7 OBJECT-COMPUTER.
IBM-AS4.
7 8 INPUT-OUTPUT SECTION.
8 9 FILE-CONTROL.
9 1
SELECT RELATIVE-FILE ASSIGN TO DISK-FILED
1 11
ORGANIZATION IS RELATIVE
11 12
ACCESS IS SEQUENTIAL
12 13
RELATIVE KEY INPUT-WEEK
13 14
FILE STATUS STATUS-VALUE.
14 15
SELECT INPUT-FILE ASSIGN TO DISK-FILES2
15 16
FILE STATUS STATUS-VALUE.
17
16 18 DATA DIVISION.
17 19 FILE SECTION.
18 2 FD RELATIVE-FILE LABEL RECORDS STANDARD.
19 21 1 RELATIVE-RECORD
PICTURE X(15).
2 22 FD INPUT-FILE LABEL RECORDS STANDARD.
21 23 1 INPUT-RECORD.
22 24
5 INPUT-YEAR
PICTURE 99.
23 25
5 INPUT-WEEK
PICTURE 99.
24 26
5 INPUT-UNIT-SALES
PICTURE S9(6).
25 27
5 INPUT-DOLLAR-SALES
PICTURE S9(9)V99.
26 28 WORKING-STORAGE SECTION.
29
27 3 1 INPUTEND
PICTURE X VALUE SPACE.
28 31
88 THE-END-OF-INPUT
VALUE "E".
29 32 1 WORK-RECORD.
3 33
5 FILLER
PICTURE X(21).
31 34
5 CURRENT-WORK-YEARS
PICTURE X(84).
32 35
5 NEW-WORK-YEAR.
33 36
1 WORK-YEAR
PICTURE 99.
34 37
1 WORK-WEEK
PICTURE 99.
35 38
1 WORK-UNIT-SALES
PICTURE S9(6).
36 39
1 WORK-DOLLAR-SALES
PICTURE S9(9)V99.
37 4 66 WORK-OUT-RECORD RENAMES
38 41
CURRENT-WORK-YEARS THROUGH NEW-WORK-YEAR.
39 42 1 ERROR-MESSAGE.
4 43
5 OP-NAME
PICTURE X(7).
41 44
5 FILLER
PICTURE X(1)
42 45
VALUE " ERROR ON ".
43 46
5 FILE-NAME
PICTURE X(13).
44 47
5 FILLER
PICTURE X(16)
45 48
VALUE " FILE STATUS IS ".
46 49
5 STATUS-VALUE
PICTURE X(2).
5
47 51 PROCEDURE DIVISION.
52 DECLARATIVES.
53 I-O-ERROR SECTION.
54
USE AFTER STANDARD ERROR PROCEDURE ON RELATIVE-FILE,
55
INPUT-FILE.
56 ERROR-PROCEDURE.
48 57
DISPLAY ERROR-MESSAGE.
49 58
DISPLAY "PROCESSING TERMINATING".
5 59
STOP RUN.
6 END DECLARATIVES.
61 MAIN-PROCEDURE SECTION.
62 BEGIN-PROCESSING.
51 63
MOVE "OPEN" TO OP-NAME.
52 64
MOVE "INPUT-FILE" TO FILE-NAME.
53 65
OPEN INPUT INPUT-FILE.
54 66
MOVE "RELATIVE-FILE" TO FILE-NAME.
55 67
OPEN I-O RELATIVE-FILE.
56 68
PERFORM READ-FILES.
57 69
PERFORM UPDATE-RELATIVE-FILE THRU READ-FILES
7
UNTIL THE-END-OF-INPUT.
58 71
MOVE "CLOSE" TO OP-NAME.
59 72
MOVE "INPUT-FILE" TO FILE-NAME.
6 73
CLOSE INPUT-FILE.
61 74
MOVE "RELATIVE-FILE" TO FILE-NAME.
62 75
CLOSE RELATIVE-FILE.
63 76
STOP RUN.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 117 (Parte 1 de 2). Ejemplo de un Programa de Actualizacin de Archivo Relativo

Apndice G. Ejemplos de Proceso de Archivos

385

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
77 UPDATE-RELATIVE-FILE.
64 78
MOVE "REWRITE" TO OP-NAME.
65 79
MOVE "RELATIVE-FILE" TO FILE-NAME.
66 8
REWRITE RELATIVE-RECORD FROM WORK-OUT-RECORD.
81 READ-FILES.
67 82
MOVE "READ" TO OP-NAME.
68 83
MOVE "RELATIVE-FILE" TO FILE-NAME.
69 84
READ RELATIVE-FILE INTO WORK-RECORD
7 85
AT END SET THE-END-OF-INPUT TO TRUE.
71 86
MOVE "INPUT-FILE" TO FILE-NAME.
72 87
READ INPUT-FILE INTO NEW-WORK-YEAR
73 88
AT END SET THE-END-OF-INPUT TO TRUE.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
2 IDMEN: LBL65 GRAVEDAD: NUMSEC: 22
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

NOMCOPIA

FECH/CAM

F I N

Total
Info(-4)
Aviso(5-19)
1
1

Registros fuente ledos. . . . . . .


Registros copia ledos . . . . . . .
Miembros copia procesados . . . . .
Errores secuencia . . . . . . . . .
Mensaje gravedad ms alta enviado .
LBL91 Programa UPDTREL creado
\ \ \ \ \

D E
M E N S A J E S
\ \ \ \ \
Resumen de mensajes
Error(2-29)
Grave(3-39)
Terminal(4-99)

:
88
:

en biblioteca XMPLIB.

F I N

D E

C O M P I L A C I N \ \ \ \ \

Figura 117 (Parte 2 de 2). Ejemplo de un Programa de Actualizacin de Archivo Relativo

Recuperacin de Archivos Relativos


Este programa recupera el archivo resumen creado por el programa CRTREL, utilizando el acceso dinmico.
Los registros del INPUT-FILE contienen un campo obligatorio (INPUT-WEEK), que
es el campo RELATIVE KEY para el RELATIVE-FILE y un campo opcional
(END-WEEK). Un registro de entrada que contienen datos INPUT-WEEK y espacios
END-WEEK solicita una salida impresa para el RELATIVE-RECORD; el registro de recupera por medio del acceso al azar. (El proceso al azar es un mtodo de procesar
en el que los registros se pueden leer, escribir o eliminar de un archivo en un
orden solicitado por el programa que las utiliza.) Un registro de entrada que contenga datos tanto en INPUT-WEEK y END-WEEK solicita una salida impresa de todos
los registros RELATIVE-FILE dentro del rango RELATIVE KEY que se incluye entre
INPUT-WEEK y END-WEEK. Estos registros se recuperan mediante acceso secuencial.

386

COBOL/400 Gua del usuario

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. RTRVREL.
3
3 4 ENVIRONMENT DIVISION.
4 5 CONFIGURATION SECTION.
5 6 SOURCE-COMPUTER.
IBM-AS4.
6 7 OBJECT-COMPUTER.
IBM-AS4.
7 8 SPECIAL-NAMES. REQUESTOR IS REQUESTOR.
8 9 INPUT-OUTPUT SECTION.
9 1 FILE-CONTROL.
1 11
SELECT RELATIVE-FILE ASSIGN TO DISK-FILED
11 12
ORGANIZATION IS RELATIVE
12 13
ACCESS IS DYNAMIC
13 14
RELATIVE KEY INPUT-WEEK
14 15
FILE STATUS IS RELATIVE-FILE-STATUS.
15 16
SELECT INPUT-FILE ASSIGN TO DISK-FILEF
16 17
FILE STATUS IS INPUT-FILE-STATUS.
17 18
SELECT PRINT-FILE ASSIGN TO PRINTER-QSYSPRT
18 19
FILE STATUS IS PRINT-FILE-STATUS.
2
19 21 DATA DIVISION.
2 22 FILE SECTION.
21 23 FD RELATIVE-FILE LABEL RECORDS STANDARD.
22 24 1 RELATIVE-RECORD-1.
23 25
5 RELATIVE-RECORD OCCURS 5 TIMES INDEXED BY REL-INDEX.
24 26
1 RELATIVE-YEAR
PICTURE 99.
25 27
1 RELATIVE-WEEK
PICTURE 99.
26 28
1 RELATIVE-UNIT-SALES
PICTURE S9(6).
27 29
1 RELATIVE-DOLLAR-SALES PICTURE S9(9)V99.
28 3 FD INPUT-FILE LABEL RECORDS STANDARD.
29 31 1 INPUT-RECORD.
3 32
5 INPUT-WEEK
PICTURE 99.
31 33
5 END-WEEK
PICTURE 99.
32 34 FD PRINT-FILE LABEL RECORDS OMITTED.
33 35 1 PRINT-RECORD.
34 36
5 PRINT-WEEK
PICTURE 99.
35 37
5 FILLER
PICTURE X(5).
36 38
5 PRINT-YEAR
PICTURE 99.
37 39
5 FILLER
PICTURE X(5).
38 4
5 PRINT-UNIT-SALES
PICTURE ZZZ,ZZ9.
39 41
5 FILLER
PICTURE X(5).
4 42
5 PRINT-DOLLAR-SALES
PICTURE $$$$,$$$,$$$.99.
41 43 WORKING-STORAGE SECTION.
42 44 77 RELATIVE-FILE-STATUS
PICTURE XX.
43 45 77 INPUT-FILE-STATUS
PICTURE XX.
44 46 77 PRINT-FILE-STATUS
PICTURE XX.
45 47 77 HIGH-WEEK
PICTURE 99 VALUE 53.
46 48 77 OP-NAME
PICTURE X(9).
47 49 1 INPUTEND
PICTURE X(9).
48 5
88 THE-END-OF-INPUT
VALUE "E".
49 51 PROCEDURE DIVISION.
52 DECLARATIVES.
53 RELATIVE-FILE-ERROR SECTION.
54
USE AFTER STANDARD ERROR PROCEDURE ON RELATIVE-FILE.
55 RELATIVE-ERROR-MSG.
5 56
DISPLAY OP-NAME, " ERROR ON RELATIVE-FILE ".
51 57
DISPLAY "FILE STATUS VALUE IS ", RELATIVE-FILE-STATUS.
52 58
DISPLAY "PROCESSING TERMINATED ".
53 59
STOP RUN.
6 INPUT-FILE-ERROR SECTION.
61
USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE.
62 INPUT-ERROR-MSG.
54 63
DISPLAY OP-NAME, " ERROR ON INPUT-FILE ".
55 64
DISPLAY "FILE STATUS VALUE IS ", INPUT-FILE-STATUS.
56 65
DISPLAY "PROCESSING TERMINATED ".
57 66
STOP RUN.
67 PRINT-FILE-ERROR SECTION.
68
USE AFTER STANDARD ERROR PROCEDURE ON PRINT-FILE.
69 PRINT-ERROR-MSG.
58 7
DISPLAY OP-NAME, " ERROR ON PRINT-FILE ".
59 71
DISPLAY "FILE STATUS VALUE IS ", PRINT-FILE-STATUS.
6 72
DISPLAY "PROCESSING TERMINATED ".
61 73
STOP RUN.
74 END DECLARATIVES.

NOMCOPIA

FECH/CAM

5/24/94
5/24/94

Figura 118 (Parte 1 de 2). Ejemplo de un Programa de Recuperacin de Archivo Relativo

Apndice G. Ejemplos de Proceso de Archivos

387

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
75 MAIN-PROCEDURE SECTION.
76 MAIN-PROCESSING.
62 77
MOVE "OPEN" TO OP-NAME.
63 78
OPEN INPUT INPUT-FILE RELATIVE-FILE
79
OUTPUT PRINT-FILE.
64 8
MOVE SPACES TO PRINT-RECORD.
65 81
PERFORM READ-INPUT-FILE.
66 82
PERFORM CONTROL-PROCESS THRU READ-INPUT-FILE
83
UNTIL THE-END-OF-INPUT.
67 84
MOVE "CLOSE" TO OP-NAME.
68 85
CLOSE RELATIVE-FILE
86
INPUT-FILE
87
PRINT-FILE.
69 88
STOP RUN.
89 CONTROL-PROCESS.
7 9
IF (END-WEEK = SPACES OR END-WEEK = )
71 91
PERFORM RANDOM-PROCESS
92
ELSE
72 93
PERFORM SEQUENTIAL-PROCESS.
94 READ-INPUT-FILE.
73 95
MOVE "READ" TO OP-NAME.
74 96
READ INPUT-FILE
75 97
AT END SET THE-END-OF-INPUT TO TRUE.
98 RANDOM-PROCESS.
76 99
MOVE "READ" TO OP-NAME.
77 1
READ RELATIVE-FILE
78 11
INVALID KEY MOVE HIGH-WEEK TO RELATIVE-WEEK(1).
79 12
IF RELATIVE-WEEK(1) NOT EQUAL HIGH-WEEK
8 13
PERFORM PRINT-SUMMARY VARYING REL-INDEX FROM 1 BY 1
14
UNTIL REL-INDEX > 5.
15 SEQUENTIAL-PROCESS.
81 16
MOVE "READ" TO OP-NAME.
82 17
READ RELATIVE-FILE
83 18
INVALID KEY MOVE HIGH-WEEK TO RELATIVE-WEEK(1).
84 19
PERFORM READ-REL-SEQ
11
UNTIL RELATIVE-WEEK(1) GREATER THAN END-WEEK.
111
112 READ-REL-SEQ.
85 113
PERFORM PRINT-SUMMARY VARYING REL-INDEX FROM 1 BY 1
114
UNTIL REL-INDEX > 5.
86 115
MOVE "READ NEXT" TO OP-NAME.
87 116
READ RELATIVE-FILE NEXT RECORD
88 117
AT END MOVE HIGH-WEEK TO RELATIVE-WEEK(1).
118 PRINT-SUMMARY.
89 119
MOVE RELATIVE-YEAR (REL-INDEX) TO PRINT-YEAR.
9 12
MOVE RELATIVE-WEEK (REL-INDEX) TO PRINT-WEEK.
91 121
MOVE RELATIVE-UNIT-SALES (REL-INDEX) TO PRINT-UNIT-SALES.
92 122
MOVE RELATIVE-DOLLAR-SALES(REL-INDEX) TO PRINT-DOLLAR-SALES.
93 123
MOVE "WRITE" TO OP-NAME.
94 124
WRITE PRINT-RECORD AFTER ADVANCING 2 LINES.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
5763CB1 V3RM5
Mensajes COBOL AS/4
INST
\
28 IDMEN: LBL65 GRAVEDAD: NUMSEC: 3
Mensaje . . . . :
Bloqueo/Desbloqueo para archivo 'INPUT-FILE'
se realizar por medio del cdigo generado por compilador.
\ \ \ \ \

NOMCOPIA

F I N

Total
Info(-4)
Aviso(5-19)
1
1

Registros fuente ledos. . . . . . .


Registros copia ledos . . . . . . .
Miembros copia procesados . . . . .
Errores secuencia . . . . . . . . .
Mensaje gravedad ms alta enviado .
LBL91 Programa RTRVREL creado
\ \ \ \ \

D E
M E N S A J E S
\ \ \ \ \
Resumen de mensajes
Error(2-29)
Grave(3-39)
Terminal(4-99)

:
124
:

en biblioteca XMPLIB.

F I N

D E

C O M P I L A C I N

\ \ \ \

Figura 118 (Parte 2 de 2). Ejemplo de un Programa de Recuperacin de Archivo Relativo

388

COBOL/400 Gua del usuario

FECH/CAM

Archivos de Fusin y Clasificacin


La Figura 119 ilustra la creacin de archivos clasificados de ventas actuales y
ventas anuales hasta la fecha.
Ante todo se ejecuta la instruccin SORT para las ventas actuales. El procedimiento de entrada para esta operacin de clasificacin es SCREEN-DEPT. Los
registros se clasifican en orden ascendente por departamento, y dentro de cada
departamento, en orden descendente por ventas netas. Despus se imprime la
salida para esta clasificacin.
Una vez se completa la operacin de clasificacin, el registro de ventas actuales
se fusiona con los registros de ventas anuales hasta la fecha. Los registros de
este archivo se fusionan en orden ascendente por nmero de departamento y,
dentro de cada departamento, en orden ascendente por nmero de empleado y,
para cada empleado, en orden ascendente por meses para crear un archivo
maestro actualizado hasta la fecha.
Cuando el proceso de fusin finaliza, se imprime el archivo maestro actualizado
hasta la fecha.
5763CB1 V3RM5 91524
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID. SORTMERGE.
3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
4\ EJEMPLO SORT/MERGE QUE UTILIZA PROCEDIMIENTO ENTRADA \
5\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
3 6 ENVIRONMENT DIVISION.
4 7 CONFIGURATION SECTION.
5 8 SOURCE-COMPUTER. IBM-AS4.
6 9 OBJECT-COMPUTER. IBM-AS4.
7 1 SPECIAL-NAMES.
8 11
REQUESTOR IS CONSOLE.
9 12 INPUT-OUTPUT SECTION.
1 13 FILE-CONTROL.
11 14
SELECT WORK-FILE ASSIGN TO DISK-WRK.
12 15
SELECT CURRENT-SALES-FILE-IN ASSIGN TO DISK-CURRIN.
13 16
SELECT CURRENT-SALES-FILE-OUT ASSIGN TO DISK-CURROUT.
14 17
SELECT YTD-SALES-FILE-IN ASSIGN TO DISK-YTDIN.
15 18
SELECT YTD-SALES-FILE-OUT ASSIGN TO DISK-YTDOUT.
16 19
SELECT PRINTER-OUT ASSIGN TO PRINTER-QPRINT.
17 2 DATA DIVISION.
18 21 FILE SECTION.
19 22 SD WORK-FILE
2 23
DATA RECORD IS SALES-RECORD.
21 24 1 SALES-RECORD.
22 25
5 EMPL-NO
PIC 9(6).
23 26
5 DEPT
PIC 9(2).
24 27
5 SALES
PIC 9(7)V99.
25 28
5 NAME-ADDR
PIC X(61).
26 29
5 MONTH
PIC X(2).
27 3 FD CURRENT-SALES-FILE-IN
28 31
LABEL RECORDS STANDARD
29 32
DATA RECORD CURRENT-SALES-IN.
3 33 1 CURRENT-SALES-IN.
31 34
5 EMPL-NO
PIC 9(6).
32 35
5 DEPT
PIC 9(2).
33 36
88 ON-SITE-EMPLOYEE
VALUES
34 37
THRU 6, 8.
35 38
5 SALES
PIC 9(7)V99.
36 39
5 NAME-ADDR
PIC X(61).
37 4
5 MONTH
PIC X(2).
38 41 FD CURRENT-SALES-FILE-OUT
39 42
LABEL RECORDS STANDARD
4 43
DATA RECORD CURRENT-SALES-OUT.
41 44 1 CURRENT-SALES-OUT.

NOMCOPIA

FECH/CAM

Figura 119 (Parte 1 de 3). Ejemplo de Utilizacin de SORT/MERGE

Apndice G. Ejemplos de Proceso de Archivos

389

5763CB1 V3RM5 91524


Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
42 45
5 EMPL-NO
PIC 9(6).
43 46
5 DEPT
PIC 9(2).
44 47
5 SALES
PIC 9(7)V99.
45 48
5 NAME-ADDR
PIC X(61).
46 49
5 MONTH
PIC X(2).
47 5 FD YTD-SALES-FILE-IN
48 51
LABEL RECORDS STANDARD
49 52
DATA RECORD YTD-SALES-IN.
5 53 1 YTD-SALES-IN.
51 54
5 EMPL-NO
PIC 9(6).
52 55
5 DEPT
PIC 9(2).
53 56
5 SALES
PIC 9(7)V99.
54 57
5 NAME-ADDR
PIC X(61).
55 58
5 MONTH
PIC X(2).
56 59 FD YTD-SALES-FILE-OUT
57 6
LABEL RECORDS STANDARD
58 61
DATA RECORD YTD-SALES-OUT.
59 62 1 YTD-SALES-OUT.
6 63
5 EMPL-NO
PIC 9(6).
61 64
5 DEPT
PIC 9(2).
62 65
5 SALES
PIC 9(7)V99.
63 66
5 NAME-ADDR
PIC X(61).
64 67
5 MONTH
PIC X(2).
65 68 FD PRINTER-OUT
66 69
LABEL RECORDS OMITTED
67 7
DATA RECORD PRINT-LINE.
68 71 1 PRINT-LINE.
69 72
5 RECORD-LABEL
PIC X(25).
7 73
5 DISK-RECORD-DISPLAY
PIC X(8).
71 74 WORKING-STORAGE SECTION.
72 75 1 SALES-FILE-IN-EOF-STATUS PIC X
VALUE "F".
73 76
88 SALES-FILE-IN-END-OF-FILE
VALUE "T".
74 77 1 SALES-FILE-OUT-EOF-STATUS PIC X
VALUE "F".
75 78
88 SALES-FILE-OUT-END-OF-FILE
VALUE "T".
76 79 1 YTD-SALES-OUT-EOF-STATUS PIC X
VALUE "F".
77 8
88 YTD-SALES-OUT-END-OF-FILE
VALUE "T".
78 81 PROCEDURE DIVISION.
82 OPEN-PRINTER-FILE SECTION.
83 5-PRINTER-FILE.
79 84
OPEN OUTPUT PRINTER-OUT.
85 LIST-SORT-LIST-CURRENT-SALES SECTION.
86 1-LIST-SORT-CURRENT-SALES.
8 87
SORT WORK-FILE
88
ON ASCENDING KEY DEPT OF SALES-RECORD
89
ON DESCENDING KEY SALES OF SALES-RECORD
9
INPUT PROCEDURE SCREEN-DEPT
91
GIVING CURRENT-SALES-FILE-OUT.
92 2-LIST-SORTED-SALES.
81 93
OPEN INPUT CURRENT-SALES-FILE-OUT.
82 94
PERFORM 1-PRINT-SALES-FILE-OUT
95
THRU 11-END-PRINT-SALES-FILE-OUT
96
UNTIL SALES-FILE-OUT-END-OF-FILE.
83 97
CLOSE CURRENT-SALES-FILE-OUT.
98 UPDATE-YEARLY-REPORT SECTION.
99 4-MERGE-CURRENT-PREVIOUS.
84 1
MERGE WORK-FILE
11
ON ASCENDING KEY DEPT OF SALES-RECORD
12
ON ASCENDING KEY EMPL-NO OF SALES-RECORD
13
ON ASCENDING KEY MONTH OF SALES-RECORD
14
USING YTD-SALES-FILE-IN
15
CURRENT-SALES-FILE-IN
16
GIVING YTD-SALES-FILE-OUT.
17 4-PRINT-YTD-SALES-OUT.
85 18
OPEN INPUT YTD-SALES-FILE-OUT.
86 19
PERFORM 12-READ-PRINT-YTD-SALES-OUT
11
UNTIL YTD-SALES-OUT-END-OF-FILE.
87 111
CLOSE YTD-SALES-FILE-OUT
112
PRINTER-OUT.
88 113
STOP RUN.
114 SCREEN-DEPT SECTION.
115 6-S-D-1.
89 116
OPEN INPUT CURRENT-SALES-FILE-IN
9 117
PERFORM 7-READ-SELECT-DEPT THRU 8-END-READ-SELECT-DEPT
118
UNTIL SALES-FILE-IN-END-OF-FILE.

Figura 119 (Parte 2 de 3). Ejemplo de Utilizacin de SORT/MERGE

390

COBOL/400 Gua del usuario

NOMCOPIA

FECH/CAM

5763CB1 V3RM5 91524


Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
91 119
CLOSE CURRENT-SALES-FILE-IN.
92 12
GO TO 9-END-S-D-1.
121 7-READ-SELECT-DEPT.
93 122
READ CURRENT-SALES-FILE-IN
94 123
AT END MOVE "T" TO SALES-FILE-IN-EOF-STATUS
95 124
GO TO 8-END-READ-SELECT-DEPT.
96 125
MOVE "UNSORTED CURRENT SALES ",
126
TO RECORD-LABEL OF PRINT-LINE.
97 127
MOVE CURRENT-SALES-IN TO DISK-RECORD-DISPLAY.
98 128
WRITE PRINT-LINE.
99 129
IF ON-SITE-EMPLOYEE
1 13
MOVE CURRENT-SALES-IN TO SALES-RECORD
11 131
RELEASE SALES-RECORD.
132 8-END-READ-SELECT-DEPT.
133
EXIT.
12 134 9-END-S-D-1.
135 END-SCREEN-DEPT SECTION.
136 1-PRINT-SALES-FILE-OUT.
13 137
READ CURRENT-SALES-FILE-OUT
14 138
AT END MOVE "T" TO SALES-FILE-OUT-EOF-STATUS
15 139
GO TO 11-END-PRINT-SALES-FILE-OUT.
16 14
MOVE "SORTED CURRENT SALES "
141
TO RECORD-LABEL OF PRINT-LINE.
17 142
MOVE CURRENT-SALES-OUT TO DISK-RECORD-DISPLAY.
18 143
WRITE PRINT-LINE.
144 11-END-PRINT-SALES-FILE-OUT.
145
EXIT.
19 146 12-READ-PRINT-YTD-SALES-OUT.
11 147
READ YTD-SALES-FILE-OUT
111 148
AT END MOVE "T" TO YTD-SALES-OUT-EOF-STATUS
112 149
GO TO 13-END-READ-PRT-YTD-SALES-OUT.
113 15
MOVE "MERGED YTD SALES ",
151
TO RECORD-LABEL OF PRINT-LINE.
114 152
MOVE YTD-SALES-OUT TO DISK-RECORD-DISPLAY.
115 153
WRITE PRINT-LINE.
154 13-END-READ-PRT-YTD-SALES-OUT.
155
EXIT.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \

NOMCOPIA

FECH/CAM

Figura 119 (Parte 3 de 3). Ejemplo de Utilizacin de SORT/MERGE

Apndice G. Ejemplos de Proceso de Archivos

391

392

COBOL/400 Gua del usuario

Apndice H. Ejemplo de Vuelco con Formato COBOL


La Figura 120 en la pgina 394 muestra un ejemplo de un vuelco con formato
COBOL. Para estar seguro de que un vuelco est disponible cuando se produce
alguna anomala al ejecutar el programa, cambie el parmetro INQMSGRPY del
trabajo (por ejemplo, mediante el mandato CHGJOB) por *RQD. Cuando se solicita, es posible especificar la generacin de un vuelco.

|
|
|
|

La siguiente lista describe las reas etiquetadas de la figura:


.A/

La excepcin por la que se ha pedido el vuelco y la ubicacin en el programa


en la que se ha producido la excepcin.

.B/

El nmero de instruccin COBOL de la ltima operacin de E/S que se ha


ejecutado antes de que se haya producido la excepcin. Esta informacin
slo aparece si se ha procesado como mnimo una operacin de E/S.

.C/

La informacin actual para cada archivo. Esta informacin slo aparece si el


programa tiene archivos.

.D/

Comienzo de los campos generados por el compilador (incluidos en el vuelco


si el usuario responde con una opcin F).

.E/

Distintivos de E/S del archivo actual:


Bit

Significado

1
2
3
4
5
6
7
8

El archivo est abierto


El archivo est bloqueado
Fin de archivo
(Reservado)
Archivo optativo
Comprobacin de duplicados en archivo indexado durante la apertura
Fin de pgina
(Reservado).

.F/

Cdigo de estado anterior.

.G/

Comienzo de la Tabla Global de Mdulos (MGT).3

.H/

ltimo cdigo de excepcin.

.I/

Nmero de invocacin del programa actual.

.J/

Nombre calificado de programa y biblioteca.

.K/

Comienzo de la Tabla Global del Programa (PGT).4

.L/

Nmero de invocacin del programa principal COBOL.

.M/

Fecha del trabajo (AAMMDD).

.N/

Comienzo de los campos del usuario.

.O/

Campo con zona no vlido impreso en hexadecimal.

La Tabla Global de Mdulos (MGT) define un rea comn para el mdulo. La tabla se utiliza para pasar informacin a las
subrutinas en tiempo de ejecucin.

La Tabla Global del Programa (PGT) es un rea de comunicaciones para la unidad de ejecucin COBOL entera. Slo hay una
PGT para la unidad de ejecucin.

Copyright IBM Corp. 1994

393

5763CB1 V3RM5
Fuente COBOL AS/4
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN
1 1 IDENTIFICATION DIVISION.
2 2 PROGRAM-ID.
XMPLDUMP.
3 3
AUTHOR.
PROGRAMMER NAME.
4 4
INSTALLATION. COBOL DEVELOPMENT CENTRE.
5 5
DATE-WRITTEN. 11/27/88.
6 6
DATE-COMPILED. 5/24/94 12:21:54.
7 7 ENVIRONMENT DIVISION.
8 8 CONFIGURATION SECTION.
9 9 SOURCE-COMPUTER. IBM-AS4.
1 1 OBJECT-COMPUTER. IBM-AS4.
11 11 INPUT-OUTPUT SECTION.
12 12 FILE-CONTROL.
13 13
SELECT FILE-1 ASSIGN TO DISK-SALES.
14 14 DATA DIVISION.
15 15 FILE SECTION.
16 16 FD FILE-1
17 17
LABEL RECORDS ARE STANDARD.
18 18 1 RECORD-1.
19 19
5 R-TYPE
PIC X(1).
2 2
5 R-AREA-CODE
PIC 9(2).
21 21
88 R-NORTH-EAST VALUES 15 THROUGH 3.
22 22
5 R-SALES-CAT-1
PIC S9(5)V9(2) COMP-3.
23 23
5 R-SALES-CAT-2
PIC S9(5)V9(2) COMP-3.
24 24
5 FILLER
PIC X(1).
25
25 26 WORKING-STORAGE SECTION.
26 27 1 W-SALES-VALUES.
27 28
5 W-CAT-1
PIC S9(8)V9(2).
28 29
5 W-CAT-2
PIC S9(8)V9(2).
29 3
5 W-TOTAL
PIC S9(8)V9(2).
31
3 32 1 W-EDIT-VALUES.
31 33
5 FILLER
PIC X(8) VALUE "TOTALS: ".
32 34
5 W-EDIT-1
PIC Z(7)9.9(2)-.
33 35
5 FILLER
PIC X(3) VALUE SPACES.
34 36
5 W-EDIT-2
PIC Z(7)9.9(2)-.
35 37
5 FILLER
PIC X(3) VALUE SPACES.
36 38
5 W-EDIT-TOTAL
PIC Z(7)9.9(2)-.
39
37 4 1 END-FLAG
PIC X(1) VALUE SPACE.
38 41
88 END-OF-INPUT VALUE "Y".
42
39 43 PROCEDURE DIVISION.
44\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
45\ ABRE LA ENTRADA, BORRA LOS TOTALES, LLAMA AL PROCESO
\
46\ PRINCIPAL, VISUALIZA LOS RESULTADOS Y TERMINA LA EJECUCIN
\
47\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
48 P-START.
4 49
OPEN INPUT FILE-1.
41 5
MOVE ZEROS TO W-SALES-VALUES.
42 51
PERFORM P-MAIN UNTIL END-OF-INPUT.
52
43 53
MOVE W-CAT-1 TO W-EDIT-1.
44 54
MOVE W-CAT-2 TO W-EDIT-2.
45 55
MOVE W-TOTAL TO W-EDIT-TOTAL.
46 56
DISPLAY W-EDIT-VALUES.
47 57
STOP RUN.
58
59\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
6\ LEE ARCH. ENTRADA Y SLO PROCESA LOS REG. CORRESPONDIENTES
\
61\ AL REA NOROESTE. AL LLEGAR FINAL DE ENTRADA, PONGA EL DIST. \
62\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
63 P-MAIN.
48 64
READ FILE-1 AT END SET END-OF-INPUT TO TRUE.
5 65
IF R-NORTH-EAST AND NOT END-OF-INPUT
51 66
ADD R-SALES-CAT-1 TO W-CAT-1, W-TOTAL
52 67
ADD R-SALES-CAT-2 TO W-CAT-2, W-TOTAL.
\ \ \ \ \
F I N
D E
F U E N T E
\ \ \ \ \
Excepcin MCH122 en programa XMPLDUMP en QTEMP en nmero de instruccin
MI 5C sentencia COBOL nmero 51.
La ltima operacin de E/S ha ocurrido en la instruccin 48..B/
LBE793-Informacin perteneciente al archivo FILE-1..C/
LBE795-El archivo est abierto.
LBE796-ltima operacin de E/S completada para el archivo era READ.
LBE797-ltimo estado de archivo era 4.
LBE791-ltimo estado de archivo ampliado era.

Figura 120 (Parte 1 de 10). Ejemplo de un Vuelco con Formato COBOL

394

COBOL/400 Gua del usuario

NOMCOPIA

FECH/CAM
3/7/94
3/22/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/7/94
3/22/94
3/7/94
3/7/94
3/7/94
2/17/94
3/7/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
3/7/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94
2/17/94

VUELCO DE DATOS PARA EL PROGRAMA XMPLDUMP.QTEMP


13:39:8
5/24/94
NOMBRE
DESPL. ATRIBUTOS
VALOR .D/
.ADBUF
48 POINTER(SPP) NULL
.ADBUFVL
B9 CHAR(68)
'
'
B9 VALUE IN HEX ''X
BB8
+41
''X
.ADDEV
4B4 CHAR(1)
'
'
''X
.ADENV
493 CHAR(1)
'I'
.ADFILE
4C POINTER(SPP) NULL
.ADFUNC
49 CHAR(1)
' '
''X
.ADLN
494 BINARY(2)

.ADMID
496 BINARY(2)

.ADPGM
49B CHAR(1)
'XMPLDUMP '
.ADRLN
498 BINARY(2)

.ADRTN
47 POINTER(IP)
NULL
.ADRTYP
49A CHAR(1)
' '
''X
.ADTOD
4A5 CHAR(15)
'
'
''X
.ADTYP
491 BINARY(2)

.BINSUB
558 BINARY(4)

.BIN2
55C BINARY(2)

.BPCA
4B CHAR(32767)
'
A
T
D1
<HHH
D12
<HHH
D15
<H'
5A
+91
'HH
D15
<HHH
D22
<HHH
D99
<HHH
'
564
+181
' D1
<HHH
D23
<HHH
D25
<HHH
'
4B VALUE IN HEX '83DC19EB7A41A319E44444444C4FF14444444C88'X
4D8
+41
'88888C444114C4F1F24444444C8888888C44412'X
5
+81
'4C4F1F54444444C8888888C444134C4F1F54444444C8888888C44'X
528
+121
'4144C4F2F24444444C8888888C444154C4F9F9'X
55
+161
'4444444C8888888C444164C4FF14444444C8888888C4441'X
578
+21
'74C4F2F34444444C8888888C444184C4F2F54444444C88'X
5A
+241
'88888C44419'X
.BPCACTR
4C BINARY(2)
1
.BPCAFB
4C6 BINARY(2)
14
.BPCAMXR
4C2 BINARY(2)
163
.BPCARCD
4B POINTER(SPP) SPACE OFFSET
1632
'66'X
OBJECT
SALES
COBOLEX
SALESFILE
.BPCARIO
4C4 BINARY(2)
25
.BP1CA
4B CHAR(32767)
'
A
T
D1
<HHH
D12
<HHH
D15
<H'
5A
+91
'HH
D15
<HHH
D22
<HHH
D99
<HHH
'
564
+181
' D1
<HHH
D23
<HHH
D25
<HHH
'
4B VALUE IN HEX '83DC19EB7A41A319E44444444C4FF14444444C88'X
4D8
+41
'88888C444114C4F1F24444444C8888888C44412'X
5
+81
'4C4F1F54444444C8888888C444134C4F1F54444444C8888888C44'X
528
+121
'4144C4F2F24444444C8888888C444154C4F9F9'X
55
+161
'4444444C8888888C444164C4FF14444444C8888888C4441'X
578
+21
'74C4F2F34444444C8888888C444184C4F2F54444444C88'X
5A
+241
'88888C44419'X
.BP1CTR
4C BINARY(2)
1
.BP1FB
4C6 BINARY(2)
14
.BP1MXR
4C2 BINARY(2)
163
.BP1RCD
4B POINTER(SPP) SPACE OFFSET
1632
'66'X
OBJECT
SALES
COBOLEX
SALESFILE
.BP1RIO
4C4 BINARY(2)
25
.BSTRING
NOT ADDRESSABLE
.BUFFER
NOT ADDRESSABLE
.BUFPTR
77 POINTER(SPP) NULL
.CALERP
58 POINTER(SPP) SPACE OFFSET
1376
'56'X
OBJECT
PSSA
.CALLOWR
C7 CHAR(27)
' ETAOINSHRDLUCMFWYPVBGKQJXZ'
'485A381968995A288998493A4839486A6A897A58287929891A7A9'X
.CALPHAB
C2 CHAR(53)
' ETAOINSHRDLUCMFWYPVBGKQJXZETAOINSHRDLUCMFWYPVBGKQJXZ'
C2 VALUE IN HEX '4C5E3C1D6C9D5E2C8D9C4D3E4C3D4C6E6E8D7E5C2C7D2D8D1E7E985A381968995A288998493A483'X
C48
+41
'9486A6A897A58287929891A7A9'X
.CALUPPR
C55 CHAR(27)
' ETAOINSHRDLUCMFWYPVBGKQJXZ'
.CIMBSGN
BDA CHAR(6)
'123456789 JKLMNOPQR STUVWXYZ
ABCDEFGHI STUVWXYZ'
BDA VALUE IN HEX 'FF1F2F3F4F5F6F7F8F9DD1D2D3D4D5D6D7D8D9AA1A2A3A4A5A6A7A8A9BB1B2B3B4B5B6B7B8B9'X
C2
+41
'CC1C2C3C4C5C6C7C8C9EE1E2E3E4E5E6E7E8E9'X
.CNUMERC
C16 CHAR(1)
'123456789'
.CPADCHR
C8B CHAR(1)
' '
.CRCLEAR
D POINTER(SYP) OBJECT
QLRCLEAR
CONTEXT
QSYS
.CSEPSGN
BD8 CHAR(2)
'+-'
.DBUGRTN
45 POINTER(IP)
NULL
.DEVPTR
73 POINTER(SPP) SPACE OFFSET
324
'144'X
OBJECT
SALES
COBOLEX
SALESFILE
.DISPPOS
CB BINARY(2)

.DISPPTR
CA POINTER(SPP) NULL
.DLINENO
552 CHAR(6)
'
'
''X
.DMCACIN
87 BINARY(2)
121
.DMCACQR
872 BINARY(2)
66

Figura 120 (Parte 2 de 10). Ejemplo de un Vuelco con Formato COBOL


Apndice H. Ejemplo de Vuelco con Formato COBOL

395

.DMCBLKR
.DMCCPCL
.DMCCPOP
.DMCDBOF
.DMCDDS

.DMCDELT
.DMCDROP
.DMCFDEL
.DMCFEOD
.DMCFRCE
.DMCGET
.DMCGETD
.DMCGETK
.DMCLINK
.DMCODP

.DMCOFFS
.DMCPTGT
.DMCPUT
.DMCPUTD
.DMCRLSE
.DMCRSTD
.DMCSPDD
.DMCSPTB
.DMCTBLE
.DMCUPD
.DMPBDMJ
.DMPBDSE
.DMPCDFO
.DMPCDFP
.DMPDBFB
.DMPDBFL
.DMPDENT

3BD
178
17A
2
2C
31A
374
2C
2E8
31
338
36
388
3B
166
874
3E9
168
16A
158
15A
15C
7A5

5A
B4

28
5
78
A
C8
F
1
162
16
15E
17
16E
16C
17C
17E
164

1C6
79
19
144
144
19E
144
16C
194
1C6
22
1C6
1EE
216
23E
248
2A2
248
27
298
2C
2CA
324
2CA
2F2
31A
342
34C
3A6
34C
374
39C

CHAR(1)
'\'
BINARY(2)
13
BINARY(2)
17
BINARY(4)
74
CHAR(298)
'
R
A

+91
' TY
+181
'
3
CPF
\ '
VALUE IN HEX '88'X
+41
'199F4B83DC19EB76F83DC19EB76F'X
+81
'48A3E81119'X
+121
'E'X
+161
''X
+21
'F31'X
+241
'FFC3D7C65CE'X
BINARY(2)
69
BINARY(2)
71
CHAR(1)
' '
''X
BINARY(2)
111
BINARY(2)
69
BINARY(2)
77
BINARY(2)
14
BINARY(2)
69
BINARY(2)

CHAR(32767)
'E
M
M
F
A
+91
'
A
+181
'LES
COBOLEX
SALESFILE
A'
VALUE IN HEX '85214D414D4B141C6282C'X
+41
'143DC19EB7DFF'X
+81
'83DC36AE8'X
+121
'3DC19EB7189B19C'X
+161
'C4BC4C2E2C1D3C5E244444C3D6C2F3F8C5E7444'X
+21
'EE2C1D3C5E2C6C9D3C5414'X
+241
'11C1'X
BINARY(4)
32
BINARY(2)
69
BINARY(2)
69
BINARY(2)
69
BINARY(2)
69
BINARY(2)
69
BINARY(2)
69
BINARY(2)

BINARY(2)
1
BINARY(2)
69
NOT ADDRESSABLE
NOT ADDRESSABLE
BINARY(2)
144
POINTER(SPP) NULL
NOT ADDRESSABLE
CHAR(1)
' '
''X
CHAR(13)
DIMENSION(25)
(1)
'DATABASE
?
+91
'
'
VALUE IN HEX 'C4C1E3C1C2C1E2C54432E4545454545456F45'X
+41
'454545BFD4545D111'X
+81
2 LINES OF ZEROES SUPPRESSED
(2)
'
SALESFILE
+91
'
'
VALUE IN HEX '911E2C1D3C5E2C6C9D3C54'X
+41
'E'X
+81
''X
+121
'11'X
(3)
'
R
+91
'
R
AA
'
VALUE IN HEX '221484'X
+41
'111233'X
+81
'199EDFF18199BB18181'X
+121
''X
(4)
'
R
A

TY
+91
'
'
VALUE IN HEX '88199F4B8'X
+41
'3DC19EB76F83DC19EB76F48'X
+81
'A3E81119E'X
+121
''X
(5)
'
+91
'
CPF
\
T
'
VALUE IN HEX ''X
+41
''X
+81
'F31FFC3D7C65CE3C'X

Figura 120 (Parte 3 de 10). Ejemplo de un Vuelco con Formato COBOL

396

COBOL/400 Gua del usuario

'
'

'
DBSA'

'

'

'

'

3 '

3C4
3CE
428
3CE
3F6
41E
446
45
4AA
45
478
4A
4C8
4D2
52C
4D2
4FA
522
54A
554
5AE
554
57C
5A4
5CC
5D6
63
5D6
5FE
626
64E
658
658
68
6A8
6D
14E
149
14EA
149
14B8
14E
.DMPDEVN
.DMPDIOF
.DMPDRN
.DMPDSEK
.DMPDVNM
.DMPENT

.DMPFBAC

.DMPFBAT
.DMPFBCL
.DMPFBCT
.DMPFBDC
.DMPFBDE
.DMPFBDU
.DMPFBFN
.DMPFBH1
.DMPFBH2
.DMPFBIB
.DMPFBLN
.DMPFBLO
.DMPFBLP
.DMPFBLS

1E6

144
144
19E
144
16C
194
B
1A
164
B
D8
1
128
15
178
1A
FF
F9
838
F2
83C
11
B2

EA
BC
117
74

+121
(6)
+91
VALUE IN HEX
+41
+81
+121
(7)
+91
VALUE IN HEX
+41
+81
+121
(8)
+91
VALUE IN HEX
+41
+81
+121
(9)
+91
VALUE IN HEX
+41
+81
+121
(1)
+91
VALUE IN HEX
+41
+81
+121
(11)
VALUE IN HEX
+41
+81
+121
(12-38)
(39)
+91
VALUE IN HEX
+41
+81

'A3'X
'
'
SALESFILE 2A248'
'1'X
''X
'11E1E2C1D3C5E2C6'X
'C9D3C54F2C1F2F4F8'X
'33FF3CF
U
&
'
A
T
D'
'F3F3C6C6FF3C3C6E11'X
'A45'X
'83DC19EB7A41A319E'X
'44444444C4F'X
'1
<HHH
D12
<HHH
D15
<HHH
D15
<HHH
'
D22
<HHH
D99
<'
'F14444444C8888888C444114C4F1F24444444C8888888C4441'X
'24C4F1F54444444C8888888C444134C4F1F54444444C'X
'8888888C444144C4F2F24444444C8888888C44415'X
'4C4F9F94444444C'X
'HHH
D1
<HHH
D23
<HHH
D25
<HHH
'
D88
<HHH
D99
<HHH '
'8888888C444164C4FF14444444C8888888C44417'X
'4C4F2F34444444C8888888C444184C4F2F54444444C8888888C4'X
'44194C4F8F84444444C8888888C4441A4C4F9'X
'F94444444C8888888C4'X
'
D22
<HHH
D1
<HHH
D66
<HHH
'2
<HHH
D77
<HHH
'
'441B4C4F2F24444444C8888888C4441C4C4F'X
'F14444444C8888888C4441D4C4F6F64444444C8888888C4441'X
'E4C4F2F24444444C8888888C4441F4C4F7F74444444C'X
'8888888C4441'X
'
H25 <
'
'14C8F2F5FFFFFFFF444C11144444444'X
'4444444444444444444444444444444444444444'X
'4444444444444444444444444444444444444444'X
'4444444444'X
' '
'
'
'
'4444444444444444444444444444444444444444'X
'4444444444444444444444444444'X
2 LINES OF ZEROES SUPPRESSED
CANNOT DUMP - SPACE ADDRESSING OR BOUNDARY ALIGNMENT EXCEPTION
CHAR(1)
'
'
''X
NOT ADDRESSABLE
NOT ADDRESSABLE
NOT ADDRESSABLE
CHAR(1)
'DATABASE '
CHAR(13)
'DATABASE
?
+91
'
'
VALUE IN HEX 'C4C1E3C1C2C1E2C54432E4545454545456F45'X
+41
'454545BFD4545D111'X
+81
2 LINES OF ZEROES SUPPRESSED
CHAR(32767)
'DBSALES
COBOLEX
SALESFILE
AR NU
+91
'&
T
DATABASE
+181
'
?
'
VALUE IN HEX 'C4C2E2C1D3C5E244444C3D6C2F3F8C5E7444'X
+41
'EE2C1D3C5E2C6C9D3C541411C1'X
+81
'D9D5A45A3193E'X
+121
'11211C4C1E3C1C2C1E2C544'X
+161
'32E4545454545456F45454545BFD4545'X
+21
'D111'X
+241
''X
CHAR(2)
'AR'
BINARY(2)

BINARY(2)
CANNOT DUMP - SPACE ADDRESSING OR BOUNDARY ALIGNMENT EXCEPTION
BINARY(2)

CHAR(5)
DIMENSION(32)
CANNOT DUMP - SPACE ADDRESSING OR BOUNDARY ALIGNMENT EXCEPTION
CHAR(1)
' '
''X
CHAR(1)
'SALES
'
NOT ADDRESSABLE
NOT ADDRESSABLE
BINARY(4)
41
CHAR(1)
'COBOLEX
'
BINARY(2)

POINTER(SPP) NULL
NOT ADDRESSABLE

'

'

'

'

D2'

'

'

'
'

Figura 120 (Parte 4 de 10). Ejemplo de un Vuelco con Formato COBOL

Apndice H. Ejemplo de Vuelco con Formato COBOL

397

.DMPFBL1
.DMPFBL2
.DMPFBMF
.DMPFBMN
.DMPFBND
.DMPFBOB
.DMPFBOF
.DMPFBOL
.DMPFBPO
.DMPFBQN
.DMPFBRC
.DMPFBRW
.DMPFBSC
.DMPFBSF
.DMPFBSL
.DMPFBSN
.DMPFBTY
.DMPFBUF
.DMPFBVL
.DMPIOFB

.DMPIOFS

.DMPKYLN
.DMPNDEV
.DMPOFBS
.DMPRCD
.DMPRCDN
.DMPRDUP
.DMPRFMT
.DMPRRN
.DMPSRC
.EXCODE
.EXMSGID
.EXPARMS
.EXPTR

DC
DE
123
E
83A
EE
1D
F4
11F
124
FB
F7
12
C6
D
DA
B
13
1C6
22
27A
1C6
1EE
216
23E
266
28E
2B6
1C6
22
1C6
1EE
216
23E
142
B

1DA

D3
D35
D3
D4

.FCLPP
.FCLSTC
.FCLSTC#
.FCLSTP
.FCLSTP#
.FCPARM
.FCPARMP

6DF
6DC
6D
6FF
6EA
5B
5D

.FCPTR

5A

.FIB

8A
8FA
954
8A
8C8
8F
918
94
968
62C

.FIB#OPT
.FIB#OP1
.FIBACC
.FIBACQ
.FIBACTL
.FIBALT
.FIBCA
.FIBCFMT
.FIBCFS

8E9
6E8
6C
8BE
955
961
8C4

BINARY(2)
14
BINARY(2)

CHAR(1)
' '
''X
CHAR(1)
'SALESFILE '
BINARY(2)
CANNOT DUMP - SPACE ADDRESSING OR BOUNDARY ALIGNMENT EXCEPTION
BINARY(4)

CHAR(1)
'
'
''X
CHAR(3)
'
'
''X
BINARY(4)
992
CHAR(1)
'
'
''X
BINARY(4)
17
BINARY(2)

CHAR(1)
'N'
CHAR(1)
'
'
''X
CHAR(1)
'
'
''X
BINARY(2)

CHAR(2)
'DB'
CHAR(1)
'U
& '
'A45'X
NOT ADDRESSABLE
CHAR(32767)
'
SALESFILE
+91
'
+181
'
R
R
AA
'
VALUE IN HEX '911E2C1D3C5E2C6C9D3C54'X
+41
'E'X
+81
''X
+121
'11221'X
+161
'48411123'X
+21
'3199EDFF18199BB18181'X
+241
''X
CHAR(144)
'
SALESFILE
+91
'
'
VALUE IN HEX '911E2C1D3C5E2C6C9D3C54'X
+41
'E'X
+81
''X
+121
'11'X
NOT ADDRESSABLE
BINARY(2)
1
CHAR(17126)
DIMENSION(2)
CANNOT DUMP - SPACE ADDRESSING OR BOUNDARY ALIGNMENT EXCEPTION
NOT ADDRESSABLE
NOT ADDRESSABLE
NOT ADDRESSABLE
CHAR(1)
'SALESFILE '
NOT ADDRESSABLE
NOT ADDRESSABLE
CHAR(1)
' '
''X
CHAR(4)
'
'
''X
CHAR(12)
'
'
''X
POINTER(SPP) SPACE OFFSET
3376
'D3'X
OBJECT
PSSA
CHAR(3)
'
'
''X
CHAR(12)
'
'
''X
CHAR(12)
'
PU
'
'D3D7E44621FF'X
CHAR(21)
'
'
''X
CHAR(21)
'
'
'92A2B2C2FF'X
CHAR(22)
'
'
POINTER(SPP) SPACE OFFSET
1456
'5B'X
OBJECT
PSSA
POINTER(SYP) OBJECT
QLREXHAN
CONTEXT
QSYS
CHAR(32767)
'FILE-1
4
+91
'
A
+181
'
'
VALUE IN HEX 'C6C9D3C56F1444444444444444444444444831FF4FF'X
+41
'44444444444111C'X
+81
'83DC36AE'X
+121
'83DC19EB789'X
+161
'44444444441'X
+21
2 LINES OF ZEROES SUPPRESSED
CHAR(8)
'
'
''X
NOT ADDRESSABLE
BINARY(2)
1
BINARY(2)

CHAR(8)
'
'
'164FF'X
CHAR(1)
' '
''X
CHAR(22)
'
'
''X
CHAR(1)
'
'
''X
CHAR(2)
'4'

Figura 120 (Parte 5 de 10). Ejemplo de un Vuelco con Formato COBOL

398

COBOL/400 Gua del usuario

'
'

'

'
'

.FIBCFS1
.FIBCFS2
.FIBCHAN
.FIBCKID
.FIBCOP
.FIBCRP
.FIBCTID
.FIBCTL
.FIBCUR
.FIBCURK

.FIBOP
.FIBOP1
.FIBOP2
.FIBOP3
.FIBOP4
.FIBORG
.FIBORRN
.FIBOTP
.FIBPTR

8C4
94C
92
955
8C
8E4
957
75
8C
634
68E
634
65C
8E5
94A
94
8BF
8DA
8A
62D
62F
631
62C
6
68
61
618
628
62A
627
8CA
61B
61D
61A
636
69
636
65E
634
633
8CE
62C
631
62D
62F
8D
8CC
8CA
8D2
8CE
9D6
9CC
8C6
8C6
953
9AD
953
97B
951
951
9AB
951
979
7A1
7A1
7A2
7A3
7A4
8E7
951
8EB
3B

.FIBP1

93

.FIBRECS
.FIBREL
.FIBRLPT

8ED

.FIBDEVC
.FIBDEVI
.FIBDEVN
.FIBFLGS
.FIBFMT
.FIBFN
.FIBK#LN
.FIBK#R#
.FIBK#RK
.FIBK#TP
.FIBKCGK
.FIBKCGR
.FIBKCPD
.FIBKCTL
.FIBKDLN
.FIBKDM#
.FIBKDTP
.FIBKEY
.FIBKFLN
.FIBKFMT
.FIBKFTP
.FIBKKEY

.FIBKKLN
.FIBKKTP
.FIBKLEN
.FIBKSTC
.FIBKSTE
.FIBKSTL
.FIBKSTT
.FIBLBO
.FIBLFT
.FIBLIN
.FIBLINE
.FIBLTO
.FIBMBRN
.FIBOFMT
.FIBOFS
.FIBOFS1
.FIBOKEY

.FIBOKLN
.FIBOLDK

6B

CHAR(1)
CHAR(4)
POINTER(SPP)
ZONED(2,)
CHAR(4)
CHAR(1)
CHAR(1)
POINTER(SPP)
CHAR(6)
CHAR(123)
+91
VALUE IN HEX
+41
BINARY(2)
BINARY(2)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(3)
BINARY(2)
BINARY(4)
BINARY(2)
CHAR(1)
CHAR(8)
CHAR(8)
CHAR(8)
BINARY(2)
BINARY(2)
BINARY(2)
CHAR(1)
BINARY(4)
BINARY(2)
CHAR(1)
CHAR(1)
CHAR(121)
+91
VALUE IN HEX
+41
BINARY(2)
CHAR(1)
BINARY(2)
CHAR(1)
CHAR(1)
BINARY(2)
BINARY(2)
BINARY(2)
BINARY(2)
BINARY(2)
BINARY(2)
BINARY(2)
CHAR(1)
CHAR(1)
CHAR(2)
CHAR(1)
CHAR(121)
+91
VALUE IN HEX
+41
BINARY(2)
CHAR(123)
+91
VALUE IN HEX
+41
CHAR(4)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
BINARY(2)
BINARY(4)
BINARY(2)
POINTER(SPP)

''
'
'
''X
NULL
\\
''X
'
'
'31'X
' '
''X
'
'
''X
NULL
'
4'
'31FF4'X
'
'
'
''X
3 LINES OF ZEROES SUPPRESSED

1
'
'
' '
'8'X .E/
'
'
'FILE-1
'

' '
''X
'
'
'849'X
'
'
'24FF'X
'
'
'44FF'X

' '
'F'X

1
'
'
' '
'1'X
'
'
'
''X
3 LINES OF ZEROES SUPPRESSED

' '
''X

' '
''X
' '
''X

'SALESFILE '
'
'
''X
'' .F/
''
'
'
'
''X
3 LINES OF ZEROES SUPPRESSED

'
'
'
''X
3 LINES OF ZEROES SUPPRESSED
'
'
'31'X
' '
'3'X
' '
''X
' '
''X
' '
'1'X
1

1
SPACE OFFSET
228
'8A'X
OBJECT
PSSA
POINTER(SPP) SPACE OFFSET
12
'4B'X
OBJECT
SALES
COBOLEX
SALESFILE
BINARY(2)
12
NOT ADDRESSABLE
POINTER(SPP) NULL

'

'

'

'

Figura 120 (Parte 6 de 10). Ejemplo de un Vuelco con Formato COBOL

Apndice H. Ejemplo de Vuelco con Formato COBOL

399

.FIBROLC
.FIBROLE
.FIBROLL
.FIBRSL
.FIBRVAL
.FIBSPC
.FIBTAPE
.FIBTLEN
.FIBUBTO
.FIBUFCB
.FIBURTN
.FIBUSAV
.FIBUSE#
.FIBVERB
.FSKA
.FSKB
.FSPA
.FSPB
.FSTKS
.FWTRCD
.F1ACC
.F1ALTS
.F1CFS2
.F1CHAN
.F1COP
.F1CRP
.F1CUR
.F1DEVC
.F1DEVI
.F1DEVN
.F1FLGS
.F1FMT
.F1FN
.F1MBRN
.F1OFMT
.F1OFS
.F1OKLN
.F1OLDK

8CA
6C8
6CB
9
8F

.F1ORG
.F1OTP
.F1P1

91
5F
8D8
8C8
7C
72
711
77
6E5
6C3
8E9
8BE
94C
92
8C
8E4
8C
8E5
94A
94
8BF
8DA
8A
9D6
9CC
8C6
951
953
9AD
953
97B
8E7
8EB
93

.F1RECS
.F1SPC
.F1UBTO
.F1UFCB

8ED
8CA
9
8F

.F1URTN
.F1USE#
.F1VERB
.IOCPTR

91
8D8
8C8
86

.IOEPTR

84

.IOFDBEX
.IOOPTR

78
85

.IORTN

3A

.IP1

C9

.MAINRTN

44

.MGT
.MGTBIN8
.MGTB81
.MGTCNTR

23
347
347
2C
3C
39
328
31C
25

.MGTCPGM
.MGTDBUG
.MGTEXCP
.MGTFIB

NOT ADDRESSABLE
NOT ADDRESSABLE
NOT ADDRESSABLE
NOT ADDRESSABLE
NOT ADDRESSABLE
CHAR(14)
'
'
''X
CHAR(8)
'
'
'114FF'X
BINARY(4)

POINTER(IP)
NULL
POINTER(SPP) SPACE OFFSET
2528
'9E'X
OBJECT
PSSA
POINTER(SPP) NULL
POINTER(IP)
NULL
BINARY(2)

BINARY(2)
4
BINARY(2)

BINARY(2)

BINARY(2)

BINARY(2)

BINARY(2)

BINARY(4)

BINARY(2)
1
CHAR(1)
' '
''X
CHAR(4)
'
'
''X
POINTER(SPP) NULL
CHAR(4)
'
'
'31'X
CHAR(1)
' '
''X
CHAR(6)
'
4'
'31FF4'X
BINARY(2)

BINARY(2)
1
CHAR(1)
'
'
CHAR(1)
' '
'8'X
CHAR(1)
'
'
CHAR(3)
'FILE-1
'
CHAR(1)
'SALESFILE '
CHAR(1)
'
'
''X
CHAR(2)
''
BINARY(2)

CHAR(121)
'
+91
'
'
VALUE IN HEX ''X
+41
3 LINES OF ZEROES SUPPRESSED
BINARY(2)
1
BINARY(2)
1
POINTER(SPP) SPACE OFFSET
12
'4B'X
OBJECT
SALES
COBOLEX
SALESFILE
BINARY(2)
12
CHAR(14)
'
'
''X
POINTER(IP)
NULL
POINTER(SPP) SPACE OFFSET
2528
'9E'X
OBJECT
PSSA
POINTER(SPP) NULL
BINARY(2)

CHAR(2)
' '
'4'X
POINTER(SPP) SPACE OFFSET
1952
'7A'X
OBJECT
PSSA
POINTER(SYP) OBJECT
QDBGETM
CONTEXT
QSYS
POINTER(SPP) NULL
POINTER(SPP) SPACE OFFSET
224
'8C'X
OBJECT
PSSA
POINTER(IP)
STMT 48
INSTR # 4F
OBJECT
XMPLDUMP
CONTEXT
QTEMP
POINTER(IP)
STMT 52
INSTR # 65
OBJECT
XMPLDUMP
CONTEXT
QTEMP
POINTER(SYP) OBJECT
QLRMAIN
CONTEXT
QSYS
CHAR(16)
'COBOL MGT .LR' .G/
CHAR(8)
'
'
''X
BINARY(4)

BINARY(4)
DIMENSION(2)
(4-2)

POINTER(SYP) NULL
CHAR(1)
''
CHAR(7)
'
' .H/
POINTER(SPP) SPACE OFFSET
228
'8A'X

Figura 120 (Parte 7 de 10). Ejemplo de un Vuelco con Formato COBOL

400

COBOL/400 Gua del usuario

'

.MGTFUNC
.MGTIND

.MGTINVC
.MGTLIB
.MGTMSGI
.MGTMSGN
.MGTMSGR
.MGTMSGS
.MGTMSGT
.MGTNAME
.MGTNEXT
.MGTOSZ
.MGTOVFL
.MGTPACK
.MGTPARM
.MGTPASA

345
323
329
32A
342
31A
41A
3F2
3F
3E
3C
3D
31
24
323
325
34F
4
27

BINARY(2)
CHAR(1)
(1-7)
(8)
(9-32)
BINARY(2)
CHAR(1)
CHAR(7)
BINARY(2)
POINTER(SPP)
POINTER(IP)
POINTER(SPP)
CHAR(1)
POINTER(SPP)
CHAR(1)
CHAR(1)
PACKED(31,)
POINTER(SPP)
POINTER(SPP)

.MGTPASC
.MGTPCS
.MGTPFM
.MGTPGM

27
37
327
2A

CHAR(16)
POINTER(SPP)
CHAR(1)
POINTER(SYP)

.MGTPGT

26

POINTER(SPP)

.MGTPLVL
.MGTPROG
.MGTPTP

361
41
38

BINARY(2)
CHAR(1)
POINTER(SPP)

.MGTPTR

46

POINTER(SPP)

.MGTRST
.MGTSEG
.MGTSEPT

2B
35F
28

POINTER(IP)
BINARY(2)
POINTER(SPP)

.MGTSOSZ
.MGTSPCD
.MGTSW
.MGTTYPE
.MGTUPTR

324
329
343
344
29

CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
POINTER(SPP)

.MGT91
.NULLCL
.ODPBPTR

32A
7A
76

CHAR(1)
CHAR(1)
POINTER(SPP)

.ODPDBAS

89

POINTER(SPP)

.ONSAVE
.PBPDUM
.PBP3

4D
4D
8A
B4

CHAR(32)
VALUE IN HEX
POINTER(IP)
POINTER(IP)

.PERFCTR

55

BINARY(2)

.PGT

174
179A
17F4
174
1768
179
17B8
17E
188
183
177
177
1771
178F
179
174
176
175

CHAR(32767)
+91
+181
VALUE IN HEX
+41
+81
+121
+161
+21
+241
CHAR(1)
(1)
(2)
(3-32)
BINARY(2)
CHAR(16)
POINTER(SPP)
POINTER(SPP)

.PGTIND

.PGTINVC
.PGTLVL
.PGTMGTL
.PGTMGT1

OBJECT
PSSA
2
DIMENSION(32)
''
'1'
''
3 .I/
'QTEMP
'
'
'
''X

NULL
NULL
NULL
'XMPLDUMP '
NULL
''
''
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ''X
NULL
SPACE OFFSET
576
'168'X
OBJECT
PASA
'
'
'83DC37178'X
NULL
''
OBJECT
XMPLDUMP .J/
CONTEXT
QTEMP
SPACE OFFSET
5952
'174'X
OBJECT
PSSA

'XMPLDUMP '
SPACE OFFSET
2864
'B3'X
OBJECT
PSSA
SPACE OFFSET
56
'23'X
OBJECT
PSSA
NULL

SPACE OFFSET

''X
OBJECT
QINSEPT
CONTEXT
QSYS
''
''
' '
'8'X
'I'
SPACE OFFSET
1984
'7C'X
OBJECT
E34
PGMRS
11111
'1'
' '
'FF'X
SPACE OFFSET

''X
OBJECT
SALES
COBOLEX
SALESFILE
SPACE OFFSET
74
'2C'X
OBJECT
SALES
COBOLEX
SALESFILE
'
'
''X
NULL
STMT 42
INSTR # 3
OBJECT
XMPLDUMP
CONTEXT
QTEMP
1
.K/
'PGT .
1
'
QTEMP
XMPLDUMP
.
'
'
'D7C7E34FF4BF4444444483DC3633'X
'FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'X
'34D4B141D8E3C5D4D74444444444444444444444'X
'44421E2C1D4D7C4E4D4D7444444444444444444444438'X
'4B1'X
'29'X
'1'X
DIMENSION(32)
''
'1'
''
3 .L/
'PGT .
'
NULL
SPACE OFFSET
56
'23'X
OBJECT
PSSA

.'
'

Figura 120 (Parte 8 de 10). Ejemplo de un Vuelco con Formato COBOL

Apndice H. Ejemplo de Vuelco con Formato COBOL

401

.PNP3

.PTABLE
.PTHSIZE
.PTNUM
.PTSEG
.P21
.QLRDISP

B4
B4
B68
B3
B37
B39
B3B
CD
CC

.QLRXHAN

D5

.RCDFDBK
.RETURNP
.RTNPTR

88
82
56

.RUNRTN
.SAVKKEY

.SEPTP
.SIZERP

83
7A7
81
7A7
7CF
43
59

.SUBLEN
.SUBNAME
.SUBTXT
.SUBTXTA

D1
D12
D1
D2

.SUB2FST
.SUB2LEN
.SUB2SCD
.SUB2TP

D62
D6
D6C
D8

.SUB2TXT
.TC1
.TC2
.TMPN1

D6
BD4
BD6
CD
CD

.T1
.T2
.T3
.T1

.UCBCLMG
.UCBEDOP
.UCBFILE
.UCBFLGS
.UCBFLG1
.UCBFLG2
.UCBIBR@

B7
B7
4F
4F
51
51
53
53
9E
A3A
A94
9E
A8
A3
A58
A8
AA8
AD
A98
A99
A6
A8E
A8E
A8F
9F

.UCBINDX
.UCBIOF@

A8C
A2

.UCBLAST
.UCBLBID
.UCBLIB
.UCBLIBS
.UCBMBID
.UCBMBRS
.UCBMLIB
.UCBNXT@
.UCBOBR@

A82
A6A
A6C
A6A
A76
A76
A78
A3
A

.T2
.T3
.UCB

CHAR(48)
VALUE IN HEX
+41
CHAR(16)
BINARY(2)
BINARY(2)
CHAR(1)
PACKED(2,)
POINTER(SYP)

'
T
T
'
'43D3E33C61A43D3E33C8563'X
''X
'PT 1.

'
'D7E34FF14BF11F'X
16
1
''
25
OBJECT
QLRADRTN
CONTEXT
QSYS
POINTER(SYP) OBJECT
QLREXHAN
CONTEXT
QSYS
POINTER(SPP) NULL
POINTER(IP)
NULL
POINTER(SPP) SPACE OFFSET
576
'168'X
OBJECT
PASA
POINTER(IP)
NULL
CHAR(121)
'
+91
'
'
VALUE IN HEX ''X
+41
3 LINES OF ZEROES SUPPRESSED
POINTER(SPP) NULL
POINTER(SPP) SPACE OFFSET
1376
'56'X
OBJECT
PSSA
BINARY(2)

CHAR(1)
'
'
''X
CHAR(12)
'
'
''X
POINTER(SPP) SPACE OFFSET
3344
'D1'X
OBJECT
PSSA
CHAR(1)
'
'
''X
BINARY(2)

CHAR(1)
'
'
''X
POINTER(SPP) SPACE OFFSET
3424
'D6'X
OBJECT
PSSA
CHAR(22)
'
'
''X
CHAR(2)
' '
''X
CHAR(2)
' '
''X
CHAR(32)
'
'
VALUE IN HEX '25F'X
NOT ADDRESSABLE
PACKED(7,2)
88888.88
PACKED(7,2)
88888.88
CHAR(32)
'
'
VALUE IN HEX ''X
CHAR(32)
'
'
VALUE IN HEX ''X
CHAR(32)
'
'
VALUE IN HEX ''X
CHAR(32767)
'
A
A
A
A
A
W
+91
'
SALES
\LIBL
+181
'

"
31111186222'
VALUE IN HEX '83DC19EB73E83DC19EB7898'X
+41
'3DC19EB78983DC19EB74983DC19EB75A6'X
+81
''X
+121
'E2C1D3C5E244444FFB55CD3C9C2D344444FFB944444444'X
+161
'444444444444112FF1FF1654A22'X
+21
'1C148383C83A867FFF15F3F'X
+241
'FFF3F1F1F1F1F1FF8FFF6F2F2F2'X
CHAR(1)
' '
'2'X
CHAR(1)
' '
''X
CHAR(1)
'SALES
'
CHAR(2)
' '
'12'X
CHAR(1)
' '
'1'X
CHAR(1)
' '
'2'X
POINTER(SPP) SPACE OFFSET
12
'4B'X
OBJECT
SALES
COBOLEX
SALESFILE
BINARY(2)
1
POINTER(SPP) SPACE OFFSET
454
'1C6'X
OBJECT
SALES
COBOLEX
SALESFILE
CHAR(1)
'
'
BINARY(2)
-75
CHAR(1)
'\LIBL
'
CHAR(12)
' \LIBL
'
'FFB55CD3C9C2D344444'X
BINARY(2)
-71
CHAR(12)
'
'
'FFB94444444444'X
CHAR(1)
'
'
POINTER(SPP) NULL
POINTER(SPP) SPACE OFFSET
12
'4B'X

Figura 120 (Parte 9 de 10). Ejemplo de un Vuelco con Formato COBOL

402

COBOL/400 Gua del usuario

'

'
1'

.UCBODP@

9E

POINTER(SPP)

.UCBOPF@

A1

POINTER(SPP)

.UCBPARM
.UCBRLEN
.UCBRLVR
.UCBSEP@
.UFCBPTR

AB
AB2
A9
A4
72

BINARY(2)
BINARY(2)
CHAR(4)
POINTER(SPP)
POINTER(SPP)

.UFLGSAV
.USERTN
.USEWRK@
.U1CLMG
.U1FLGS
.U1IBF@

CF
5E
D9
A98
A8E
9F

CHAR(2)
POINTER(IP)
POINTER(SPP)
CHAR(1)
CHAR(2)
POINTER(SPP)

.U1OBF@

POINTER(SPP)

.U1SEQO
.U1UFCB

ABF
9E

CHAR(1)
POINTER(SPP)

.VALT1

B7
B7
662
7D
7D1
7C
7C2
7D8
7C
81A
7C
7E8
7CE
7D8
7D9
7DA
7DB
7DC
7DD
7DE
7DF
B28
B29
66
66B
B13
B4
AF
661
AC9
AC7
663

OBJECT
SALES
COBOLEX
SALESFILE
SPACE OFFSET

''X
OBJECT
SALES
COBOLEX
SALESFILE
SPACE OFFSET
176
'B'X
OBJECT
SALES
COBOLEX
SALESFILE
1
12
'1'
NULL
SPACE OFFSET
2528
'9E'X
OBJECT
PSSA
' '
''X
NULL
NULL
' '
'2'X
' '
'12'X
SPACE OFFSET
12
'4B'X
OBJECT
SALES
COBOLEX
SALESFILE
SPACE OFFSET
12
'4B'X
OBJECT
SALES
COBOLEX
SALESFILE
' '
'8'X
SPACE OFFSET

''X
OBJECT
SALES
COBOLEX
SALESFILE
'HHH
'
'8888888F'X
'5'
''
'89623' .M/
2

''
'
89623
2 LINES OF BLANKS SUPPRESSED
'2FFF8F9FF6F2F3FFFFFFFF'X
6 LINES OF ZEROES SUPPRESSED
' '
''X
''
''
''
''
''
''
''
''
' ' .N/
'Y'
'H25 '
' '
'
'
'
'
'TOTALS: '
25
3
15

CHAR(32)
VALUE IN HEX
.V5622
CHAR(1)
.WCBCNLS
CHAR(1)
.WCBJDAT
CHAR(7)
.WCBLURC
BINARY(2)
.WCBPINF
BINARY(2)
.WCBSWTC
CHAR(8)
.WCBUDTA
CHAR(32767)
+91
VALUE IN HEX
+41
.WCBURC
CHAR(2)
.WCBU
CHAR(1)
.WCBU1
CHAR(1)
.WCBU2
CHAR(1)
.WCBU3
CHAR(1)
.WCBU4
CHAR(1)
.WCBU5
CHAR(1)
.WCBU6
CHAR(1)
.WCBU7
CHAR(1)
END-FLAG
CHAR(1)
END-OF-INPUT
CHAR(1)
FILE-1
CHAR(12)
FILLER
CHAR(1)
FILLER
CHAR(3)
FILLER
CHAR(3)
FILLER
CHAR(8)
R-AREA-CODE
ZONED(2,)
R-NORTH-EAST
PACKED(2,)
R-NORTH-EAST
PACKED(2,)
R-SALES-CAT-1
PACKED(7,2)
\\INVALID DATA 'FFFF'X .O/
R-SALES-CAT-2 667 PACKED(7,2)
\\INVALID DATA 'FFFF'X
R-TYPE
66 CHAR(1)
'H'
RECORD-1
66 CHAR(12)
'H25 '
W-CAT-1
AD ZONED(1,2)
311111.8
W-CAT-2
ADA ZONED(1,2)
622222.16
W-EDIT-TOTAL
B16 CHAR(12)
'
'
W-EDIT-VALUES AF CHAR(5)
'TOTALS:
'
W-EDIT-1
AF8 CHAR(12)
'
'
W-EDIT-2
B7 CHAR(12)
'
'
W-SALES-VALUES AD CHAR(3)
'31111186222221693333324'
W-TOTAL
AE4 ZONED(1,2)
933333.24
STATIC STORAGE FOR PROGRAM XMPLDUMP.QTEMP
BEGINS AT OFFSET 23 IN THE PROGRAM STATIC STORAGE AREA (PSSA)
AUTOMATIC STORAGE FOR PROGRAM XMPLDUMP.QTEMP
BEGINS AT OFFSET 16C IN THE PROGRAM AUTOMATIC STORAGE AREA (PASA)

'

Figura 120 (Parte 10 de 10). Ejemplo de un Vuelco con Formato COBOL

Apndice H. Ejemplo de Vuelco con Formato COBOL

403

404

COBOL/400 Gua del usuario

Bibliografa
Para obtener informacin acerca de los temas relacionados con la programacin COBOL/400 en el sistema
AS/400, consulte las siguientes publicaciones AS/400
IBM:
Comunicaciones: Gua para la Gestin, SC10-8974
(SC41-0024)
Ttulo abreviado: Gua para la Gestin de
Comunicaciones
Device Configuration Guide, SC41-8106
Ttulo abreviado: Device Configuration Guide
Instalacin de Software, SC10-9279 (SC41-3120)
Ttulo abreviado: Instalacin de Software
System Programmers Interface Reference,
SC41-8223
Ttulo abreviado: System Programmers Interface
Reference

CICS/400 Application Programming Guide,


SC33-0822
Ttulo abreviado: CICS/400 Application
Programming Guide
Communications: Remote Work Station Guide,
SC41-0002
Ttulo abreviado: Remote Work Station Guide
Advanced Backup and Recovery Guide, SC41-8079
Ttulo abreviado: Advanced Backup and Recovery
Guide
Programacin: Lenguaje de Control Gua del
Programador, SC10-8977 (SC41-8077)
Ttulo abreviado: CL Gua del Programador
Gua para Nuevos Usuarios, SC10-8881
(SC41-8211)
Ttulo abreviado: Gua para Nuevos Usuarios

Gua para la Base de Datos, SC10-9009


(SC41-9659)
Ttulo abreviado: DDS Reference

Programming: Control Language Reference,


SC41-0030
Ttulo abreviado: CL Reference

Data Description Specifications Coding Form,


SX41-9891
Ttulo abreviado: DDS Coding Form

Gua de Publicaciones, GC10-9237 (GC41-9678)


Ttulo abreviado: Gua de Publicaciones

Communications: Intersystem Communications


Function Programmers Guide, SC41-9590
Ttulo abreviado: ICF Programmers Guide
Operacin del Sistema, SC10-9280 (SC41-3203)
Ttulo abreviado: Operacin del Sistema
Gua Bsica para la Seguridad, SC10-9238
(SC41-0047) y Seguridad Manual de Consulta,
SC10-8981 (SC41-8083)
Ttulos abreviados: Gua Bsica para la Seguridad
y Seguridad Manual de Consulta
Distributed Data Management Guide, SC41-9600
Ttulo abreviado: DDM Guide
Gua para la Base de Datos, SC10-9009
(SC41-9659)
Ttulo abreviado: Gua para la Base de Datos
Utilidades: Programa de Utilidad para la Definicin
Interactiva de Datos (IDDU) Gua del Usuario,
SC10-9007 (SC41-9657)
Ttulo abreviado: IDDU Gua del Usuario
System Programmers Interface Reference,
SC41-8223
Ttulo abreviado: System Programmers Interface
Reference

Copyright IBM Corp. 1994

Programacin: Gua para la Gestin de Trabajos,


SC10-8978 (SC41-8078)
Ttulo abreviado: Gua para la Gestin de Trabajos
SAA* Lenguaje de Consulta Estructurada SQL/400
Manual de Consulta, SC10-8997 (SC41-9608)
Ttulo abreviado: SQL/400* Manual de Consulta
Gua para la Gestin de Datos, SC10-9008
(SC41-9658)
Ttulo abreviado: Gua para la Gestin de Datos
COBOL/400 Reference, SC09-1813
Ttulo abreviado: COBOL/400 Reference
American National Standard Programming
Language COBOL, ANSI X3.23-1985, ISO
1989-1985
Ttulo abreviado: American National Standard
Programming Language COBOL, ANSI X3.23-1985,
ISO 1989-1985
Para obtener ms informacin sobre la Interfaz Comn
de Programacin (CPI) de COBOL, consulte la
siguiente publicacin:
Systems Application Architecture Common
Programming Interface COBOL Reference,
SC26-4354.

405

406

COBOL/400 Gua del usuario

Glosario de Abreviaturas
Abreviatura

Significado

Explicacin

Abreviatura

Significado

Explicacin

Appl Dev
Tools

Herramientas de desarrollo de aplicaciones


(Application
Development Tools)

Consta de
programas
para el
sistema
AS/400,
como la
Ayuda para
el Diseo
de Pantallas (SDA)
y el Programa de
Utilidad
para la
Entrada del
Fuente
(SEU).

ASCII

American National
Standard Code for
Information Interchange
(Cdigo estndar americano para el intercambio
de informacin).

ANSI

American National
Standards Institute

Organizacin
formada
por fabricantes,
consumidores y
grupos de
intereses
generales,
que establece los
procedimientos
por los que
las organizaciones
acreditadas
crean y
mantienen
unos
estndares
industriales
voluntarios
en los
Estados
Unidos.

Cdigo
desarrollado por el
American
National
Standards
Institute
para el
intercambio
de informacin
entre sistemas de
proceso de
datos, sistemas de
comunicaciones
de datos y
equipos
asociados.
El juego de
caracteres
ASCII
consta de
caracteres
de 8 bits,
que a su
vez
constan de
caracteres
de control
de 7 bits y
de caracteres simblicos,
adems de
un bit de
comprobacin de
paridad.

Copyright IBM Corp. 1994

407

Abreviatura

Significado

Explicacin

Abreviatura

Significado

Explicacin

CICS

Customer Information
Control Service (Servicio
de control de informacin al cliente).

Programa
bajo
licencia
IBM que
habilita las
transacciones
entradas en
las
estaciones
de trabajo
remotas
para que
los programas de
aplicacin
escritos por
el usuario
las
procesen
simultneamente.
Este programa con
licencia
incluye funciones para
la creacin,
utilizacin y
mantenimiento de
bases de
datos, as
como para
la comunicacin con
CICS o
cualquier
otro
sistema
operativo.

DBCS

Juego de Caracteres de
Doble Byte (Double-Byte
Character Set)

CL

Lenguaje de control
(Control Language)

Conjunto
de todos
los mandatos con
los que un
usuario
solicita funciones del
sistema.

Juego de
caracteres
en el que
cada
carcter
est representado por
2 bytes.
Los
idiomas
como el
japons,
chino y
coreano,
que contienen ms
smbolos
de los que
pueden
representarse
mediante
256 puntos
de cdigo,
necesitan
juegos de
caracteres
de doble
byte. Dado
que cada
carcter
necesita 2
bytes, el
teclado, la
visualizacin
en pantalla
y la impresin de
caracteres
DBCS precisan un
hardware y
unos programas que
den soporte
a DBCS. El
sistema da
soporte a
cuatro
juegos de
caracteres
de doble
byte:
japons,
coreano,
chino simplificado y
chino tradicional.
Comprese
con Juego
de Caracteres de un
Solo Byte.

408

COBOL/400 Gua del usuario

Abreviatura

Significado

Explicacin

Abreviatura

Significado

Explicacin

DDM

Distributed Data
Management (Gestin
de Datos Distribuidos)

Funcin del
sistema
operativo
que permite
que un programa de
aplicacin o
un usuario
de un
sistema utilicen
archivos de
datos almacenados en
sistemas
remotos.
Los sistemas
deben estar
conectados
por una red
de comunicaciones;
asimismo,
los sistemas
remotos
deben utilizar DDM.

FIPS

Federal Information
Processing Standard

Estndar
oficial que
sirve para
mejorar la
utilizacin y
gestin de
los ordenadores y
del proceso
de datos en
las
empresas.

ICF

Intersystem
Communications
Function

Funcin del
sistema
operativo
que permite
que un programa se
comunique
de modo
interactivo
con otro
programa o
sistema.

I/O

Entrada/Salida
(Input/Output)

Datos proporcionados
al ordenador o
datos resultantes del
proceso
informtico.

LVLCHK

Comprobacin de Nivel

Funcin
que
compara
los identificadores de
registro de
nivel de
formato de
un archivo
que se va a
abrir con la
descripcin
de archivo
que forma
parte de un
programa
compilado,
con el fin
de determinar si el
formato de
registro
para el
archivo
cambiado
desde el
programa
se ha compilado.

DDS

EBCDIC

Especificaciones de descripcin de datos (Data


Description
Specifications)

Extended Binary-Coded
Decimal Interchange
Code.

Descripcin
de la base
de datos
del usuario
o de
archivos de
dispositivo
que se
entra en el
sistema en
un formato
fijo. La
descripcin
se utiliza
para crear
archivos.
Juego de
caracteres
codificados
que consta
de 256
caracteres
de ocho
bits.

Glosario de Abreviaturas

409

Abreviatura

Significado

Explicacin

Abreviatura

Significado

Explicacin

ODT

Tabla de definicin de
objetos (Object
Definition Table)

Tabla
creada por
el sistema
en el
tiempo de
compilacin
para seguir
la pista de
los objetos
declarados
en el programa. Los
objetos de
programa
que estn
en la tabla
incluyen
variables,
constantes,
etiquetas,
listas de
operandos
y descripciones de
excepciones. La
tabla reside
en el objeto
programa
compilado.

SEU

Programa de Utilidad
para la Entrada del
Fuente (Source Entry
Utility)

Funcin del
programa
bajo
licencia
IBM
Herramientas
de Desarrollo de
Aplicaciones
AS/400 que
se utiliza
para crear
y cambiar
miembros
fuente.

SQL/400

Lenguaje de Consulta
Estructurado/400
(Structured Query
Language/400)

Programa
bajo
licencia
IBM que da
soporte a la
base de
datos
relacional
que se
utiliza para
insertar
informacin
en una
base de
datos y
para
obtener y
organizar
informacin
seleccionada desde
una base
de datos.

UPSI

Conmutador del indicador del estado de programa del usuario

Conmutador
externo de
programa
que efecta
las funciones de
un conmutador de
hardware.
Se proporcionan
ocho conmutadores:
UPSI 0 - 7.

OS/400

Operating System/400

Sistema
operativo
del AS/400.

SDA

Ayuda para el Diseo de


Pantallas

Funcin del
programa
bajo
licencia
Herramientas
de Desarrollo de
Aplicaciones
AS/400
(AS/400
Application
Development
Tools) que
proporciona
ayuda al
usuario
para
disear,
crear y
mantener
pantallas y
mens.

410

COBOL/400 Gua del usuario

Nota: Las abreviaturas de los mandatos OS/400 no


aparecen en este apartado. Vea el manual CL
Reference para ms informacin acerca de los
mandatos de OS/400 y de su utilizacin.

ndice
Caracteres Especiales
/ (barra vertical) 12, 39
nmero mximo en un programa
* (asterisco) 12

93

A
abrir va de acceso de datos (ODP) 99
acerca de este manual xi
actualizacin
archivos indexados 371, 378
archivos relativos 371, 384
archivos secuenciales 373
y ampliacin de archivos secuenciales 371,
373
ADM/400
frase ADVANCING 243
para FORMATFILE 245
ajuste a los estndar ANSI 348
alfabtico, definicin del carcter 352
alfabeto-nombre, descripcin de 351
alias de definicin 117
almacenamiento, inicializacin de 291
almacenamiento, utilizacin de menos 22
alteracin temporal de archivos especificados por
el programa 97
alteracin temporal de mensajes 347
American National Standards Institute (ANSI) xiii,
1, 339, 348, 407
ajuste a estndares
con archivos indexados 251
con archivos relativos 260
con archivos secuenciales 261
COBOL ANSI 74 frente a COBOL ANSI
85 351
estndar xiii, 1, 348
ampliaciones de lenguaje no estndar
Vase ampliaciones IBM
ampliaciones IBM
archivos transaction 145241
formato, indicacin en sintaxis de 5
GOBACK
lectura 5
sealizacin 25, 347
soporte del juego de caracteres de doble byte
(DBCS) 355369
visin general 1

Copyright IBM Corp. 1994

ampliaciones, listado de 1
anomala del compilador 16
anterior, compilacin del release 32
API (Interfaces del Programa de Aplicacin)
manejo de errores 55, 72
utilizacin con punteros 305
API QLRCHGCM 72
API QLRRTVCE 72
API QLRSETCE 55, 72
Aplicaciones, mensajes de Herramientas para el
Desarrollo de 343
archivo de comunicaciones de datos 145, 181
archivo de dispositivo de pantalla 146
archivo de funcin de comunicaciones
intersistemas (ICF)
archivos de dispositivo mltiples y
simples 170
clusula ACCESS MODE 182
clusula ASSIGN 181
clusula CONTROL-AREA 183
clusula FILE STATUS 182
clusula ORGANIZATION 181
clusula RELATIVE KEY 182
comunicaciones 164
utilizacin para especificar subarchivos 164
archivo de impresora por omisin 25
archivo de mensajes en tiempo de compilacin
QLBLMSG 347
archivo de mensajes en tiempo de ejecucin
QLBLMSGE 347
archivo fuente por omisin (QLBLSRC) 10, 18
archivos
Vase tambin archivos de disco, archivos descritos externamente,archivos descritos por el
programa, archivos fuente
atributos de 46
cierre 352
claves 135
creacin de
indexado 371, 376
relativo 371, 382
secuencial 371
DATABASE 251
DATABASE frente a DISK 251
descripcin 371
descripcin externa 110
DISK 251

411

archivos (continuacin)
ejemplos
archivos indexados 376, 378
archivos relativos 382, 384
archivos secuenciales 371, 373
en sistemas AS/400 93, 371
especfica 243
FORMATFILE 244
lgicas 257
mtodos de 262
mtodos de proceso 251
organizacin indexada 251
organizacin secuencial 261
organizaciones relativas 260
PRINTER 243
programas de ejemplo 371388
recuperacin relativa de 371, 386
redireccionamiento de acceso a 94
relativa 260
salvaguarda de secuencia de registros 261
secuencial 261
tcnicas para procesar 371388
TRANSACTION 145
vas de acceso 262
archivos compartidos 97
archivos de bases de datos
Vase tambin archivos de disco
consideraciones del archivo DATABASE 251
consideraciones del archivo DISK 251
DATABASE frente a DISK 251
mtodos de proceso 251
archivos de disco 251
mtodos de proceso 264
archivos de dispositivo
consideraciones sobre el archivo
DATABASE 251
consideraciones sobre el archivo DISK 251
mltiple 170
nico 170
y E/S 93
archivos de dispositivo simple 170
archivos de inicializacin con registros
eliminados 263
archivos de mensaje 347
archivos descritos externamente 119, 246
alterar temporalmente funciones 136
aadir funciones 136
comprobacin del nivel 136
consideraciones sobre el uso 110
DDS para 114

412

COBOL/400 Gua del usuario

archivos descritos externamente (continuacin)


descripcin 109
e instruccin COPY, de formato DD, DDR,
DDS, DDSR 125
impresora, especificar con FORMATFILE
archivos de 244
ventajas del uso de archivos de
impresora 244
archivos descritos por el programa
archivos TRANSACTION 145
consideraciones sobre el uso 110
descripcin 109
descrito externamente por DDS con mandatos
Crear Archivos 110
archivos FORMATFILE
descripcin 244
programas de ejemplo 244
archivos indexados
actualizacin 371, 378
campos clave 252
creacin 371, 376
descripcin 251
mtodos de proceso para DISK y
DATABASE 251
archivos no disponibles en tiempo OPEN 23
archivos relativos
acceso secuencial 23
actualizacin 371, 384
creacin 371, 382
definicin 260
en COBOL 260
inicializacin para la salida 262
para OPEN OUTPUT 282
recuperacin de 371, 386
y rendimiento 282
archivos secuenciales
actualizacin y ampliacin 371, 373
creacin 261, 371
definicin 261
en COBOL 261
archivos transaction
archivo, establecer el estado de 73
clusula ACCESS MODE 182
clusula ASSIGN 181
clusula CONTROL-AREA 183
clusula FILE STATUS 182
clusula ORGANIZATION 181
clusula RELATIVE KEY 182
cdigo de retorno principal 73
cdigo de retorno secundario 73

archivos transaction (continuacin)


cdigos de retorno 73
consideraciones sobre la Divisin de
Datos 182, 184
consideraciones sobre la Divisin de
Entorno 180
consideraciones sobre la Divisin de Procedimientos 185
definicin 145
descripcin 145
descritos externamente 145
ejemplo, estacin de trabajo de programas
de 210
entrada de control de archivos y Divisin de
Entorno 180
entrada de descripcin de archivos y Divisin
de Entorno 184
especificaciones de descripcin de datos (DDS)
para 145, 146
gestin de pantalla 146
organizacin de 181
proceso descrito externamente 149
programa descrito
recursos de datos booleanos 185
y subarchivos 166
archivos TRANSACTION descritos
externamente 145149
rea de datos
descripcin 319
local 319
PIP 320
rea de datos de los parmetros de inicializacin
de programas (PIP)
Vase rea de datos PIP
rea de datos PIP (parmetros de inicializacin de
programas) 320
descripcin 320
rea de parche del programa 22
rea modificada-ltima-vez 10
argumentos, descripcin en el programa llamador
de 293
Arquitectura de Representacin de Datos de Tipo
Carcter (CDRA) 143
* (asterisco) 12
atributo de rea de indicador separada (SI) 150
atributos
de archivos 46
de tems de datos 47
tems de tabla 47

ATTRIBUTE DATA 187


aumento de eficacia 22
avisos
barras de revisin ix
descripcin ix
patentes ix
azar, definicin de proceso al

386

B
barra vertical (/) 12, 39
bibliotecas, prueba de 57
binarios, rendimiento de tems 281
BLANK WHEN ZERO
definicin con clusula LIKE 270
bloque de informacin de archivo (FIB) 73
bloque, descripcin de 107
bloqueo de archivos 97
bloqueo de control del archivo de usuario
(UFCB) 73
bloqueo de registros de salida 107
bloqueo de registros y de archivos 97, 100
bloqueo de registros y de E/S no
satisfactorios 99
bloqueo, archivo y registro de 97
booleano, descripcin del literal 20
bucles de un programa 283, 284
bucles en un programa 283
bsqueda de caracteres DBCS en una tabla
BY CONTENT, definicin de 291
BY REFERENCE, definicin de 291

367

C
cambio del valor de las variables 65
cambios con el COBOL ANSI 74 351353
campo ATTRIBUTES 46
campo cambiar/fecha (CHGDATE) 44
campo COPYNAME 44
campo de datos 10
campo de entrada 147, 199
campo de longitud (LENGTH) 46
campo de nombre interno (I-NAME) 46
campo de nmero de instruccin (STMT) 45, 50
campo de salida 147
campo de tipo de clase de datos (TYPE) 46
campo DEFINED 49
campo FIPS-ID 48
campo fuente
campos 10
lgica, especificacin de la estructura 181

ndice

413

campo fuente (continuacin)


longitud de registro 10
por omisin 10
programa, supresin del listado de 42
campo NAMES 49
campo REFERENCES 49
campo SECTION 46
campo SOURCE NAME 46
campos
atributo BLANK WHEN ZERO 272
atributos
BLANK WHEN ZERO 272
SIGN IS TRAILING 272
USAGE IS DISPLAY 272
valor por omisin 272
coma flotante 133
fecha 138
hora 138
indicacin de la hora 138
longitud fija 138
longitud variable 137
carcter 137, 138
grfico 138, 140
longitud mxima 137
longitud, ejemplo de 138
restricciones 137
Posibilidad de nulos 139
separador de la hora 39
campos con posibilidad de nulos 139
campos de clave
claves descendentes 265
claves parciales 253
contiguos, varios 252
definido por programa 257
nombre -DDS aadido a 129, 131
para archivos indexados 252
campos de clave definidos por el programa 257
campos de coma flotante 133
campos de desplazamiento (DISP) 46
campos de longitud variable 137
definicin 137
ejemplo de 137, 140, 141
longitud mxima de 137
longitud, ejemplo de longitud 138
restricciones 137
campos grficos de longitud fija 140
carcter de sustitucin (X3F) en los datos 143
caracteres de doble byte 355
caracteres no vlidos 119
opciones DDR y DDSR 119

414

COBOL/400 Gua del usuario

caracteres sustituidos en el nombre de


campo 119
caractersticas principales 2, 371
CCSIDs (Identificadores de Juego de
Caracteres) 143
CDRA (Arquitectura de Representacin de Datos
de Tipo Carcter) 143
cierre de archivos con la instruccin
CANCEL 352
clusula ASSIGN 93, 150, 181
nombre de dispositivo 94
clusula CONTROL-AREA 183184
clusula FILE STATUS 109
clusula JUSTIFIED 360
clusula LIKE
descripcin 270
formato de 271
parte PICTURE 271
clusula LINAGE 243
clusula OCCURS 360
clusula ORGANIZATION 181
clusula ORGANIZATION IS INDEXED 252
clusula PICTURE 279, 361
definicin con clusula LIKE 270
y rendimiento 280
clusula RECORD KEY 135
EXTERNALLY-DESCRIBED-KEY 135
Clusula REDEFINES 360
elemento de datos del puntero como sujeto u
objeto 297
para frases ALL-FORMATS o E/S 125
clusula RELATIVE KEY 182
clusula RENAMES 361
clusula SEGMENT-LIMIT 325
clusula USAGE
con archivos transaction 152
definicin con la clusula LIKE 270
numrico 122
USAGE IS POINTER 295
clusula VALUE 361
clusulas
ACCESS MODE 182
ASSIGN 150, 181
clusula CURRENCY 12
clusula DECIMAL-POINT 12
clusula REPLACING identificador-1 BY
identificador-2 13
CONTROL-AREA 183
FILE STATUS 109, 182
INDICATOR 152

clusulas (continuacin)
JUSTIFIED 360
LIKE 152
LINAGE 243
OCCURS 152, 360
ORGANIZATION 181
ORGANIZATION IS INDEXED 252
PICTURE 152, 279, 361
RECORD KEY 135
REDEFINES 352, 360
RELATIVE KEY 182
RENAMES 361
SAME AREA 351
SAME RECORD AREA 351
SEGMENT-LIMIT 325
sintaxis, notacin para la 3
SORT-MERGE AREA 351
USAGE 152
VALUE 152, 361
WITH DEBUGGING MODE 329
clusulas de uso numrico 122
clusulas opcionales 3
EXTERNALLY-DESCRIBED-KEY 252
clave parcial, referencia a 253
clave relativa, definicin de 166
claves
coma flotante 133
comn 135
generacin de 127
registro 135
validez 252
claves comunes 135
claves de funcin
especificacin con DDS
Vase archivos de transaccin
y clusula CONTROL-AREA 184
claves de registro 135
CODE/400
cdigo de optimizacin 22
cdigos de retorno 79
cdigos de retorno principal/secundario 79
comentarios con caracteres DBCS 359
COMP-3, rendimiento e tems 280
compartido-para-actualizacin 97
compartido-para-lectura 97
compartido-sin-actualizacin 97
compilacin de programas COBOL
errores detectados por el compilador 58
intentos no satisfactorios 16
invocar al compilador 15

compilacin de programas COBOL (continuacin)


listado de ejemplo 40
mensajes 345
para ACCEPT/DISPLAY ampliadas 23
para el release anterior 32
programas mltiples 37
rebasar los lmites de tamao interno 15
redireccin de archivos 94
salida 38
terminacin anmala del compilador 16
TGTRLS, utilizacin de 32
compilaciones por lotes 37
comprobacin de literales DBCS 357
comprobacin de nivel 136
comprobacin de programas COBOL/400
bibliotecas de prueba 57
cambio del contenido de las variables 65
Datos, utilizacin del listado IRP y correlacin
de la Divisin de Datos 63
estado de archivo 108
funciones OS/400 para 57
puntos de interrupcin 59, 65
rastreos 66, 68
seguridad, mantenimiento de la 57
visin general 6
visualizacin de elementos de tabla 57, 62
visualizacin de variables 62
vuelco con formato 69
y depuracin 57
comprobacin de validez 146
comprobacin de validez de estacin de
trabajo 146
compromiso, definicin del lmite de 100
comunicaciones interactivas
con otros programas 145
con sistemas remotos 145
con usuarios de estaciones de trabajo 145
consideraciones entre programas 285, 368
recuperacin 87
condicin AT END 84, 197, 200
Configuracin, descripcin de la Seccin de 10,
359
conmutador del indicador de estado del programa
del usuario (UPSI)
conmutador en tiempo de ejecucin 69, 330, 331
conmutador UPSI (indicador del estado del programa del usuario)
conmutador y compilacin WITH DEBUGGING
MODE 329

ndice

415

consideraciones acerca de la comunicacin entre


programas 285
consideraciones acerca de la programacin 267
consideraciones sobre archivos
descendentes 265
consideraciones sobre archivos lgicos 257
consideraciones sobre el archivo 93, 251, 321
consideraciones sobre el rendimiento 280
operaciones de E/S 107
consideraciones sobre la eficacia 280
consideraciones sobre la portabilidad
Vase segmentacin
consideraciones sobre las alteraciones temporales
del sistema 97
constante figurativa NULL 299
constante figurativa NULL 299
constante figurativa QUOTE 20
contaje de verbos de un programa fuente 20, 45,
51
contenido del registro especial
DEBUG-ITEM 335
contiguos, definicin de tems 253
contiguos, varios campos de clave 252
control
devolver 286
transferencia 285
control de compromiso 86, 99, 103
ejemplo 102
nivel de bloqueo 100
control de segmentacin 325
control del programa
devolucin 286
transferencia 285
control, devolver desde un programa
llamado 286
control, transferencia a otro programa 285
copias disponibles de ANSI estndar xiii
correspondientes, opciones PROCESS y
CRTCBLPGM 33
creacin de archivos
archivos indexados 371, 376
archivos relativos 371, 382
archivos secuenciales 371
creacin dinmica de archivos 23

D
datos no referenciados, tems de 22
datos, deshacer edicin con manejo de errores
de 279

416

COBOL/400 Gua del usuario

datos, traspaso de
BY CONTENT y BY REFERENCE 292
en grupos 293
DDS
Vase especificaciones de descripcin de datos
declarativa USE FOR DEBUGGING 332, 333
en la Divisin de Procedimientos 332
utilizacin de procedimientos 333
definiciones PICTURE 122
delimitacin de instrucciones SQL 13
dependencia de dispositivo 93
ejemplo 94
depuracin de lenguaje fuente 329
desatendida, ejecutar el programa en
modalidad 347
desbloquear registros de entrada 107
descendente, definicin de la secuencia de
clave 265
descripcin-texto 19
descripcin externa
alteracin temporal a 136
aadir funciones a 136
descripcin y campos sealizados de nmeros de
referencia 48
descripciones de archivo 114, 184
deshacer edicin 277
definicin 277
ejemplos 278
desplazamiento a teclado estndar, definicin de
carcter de 356
desplazamiento a teclado ideogrfico, definicin
de carcter de 356
desplazamiento relativo al lmite de 16 bytes 303
destino de la salida del compilador 37
devolver control desde un programa llamado 286
diagramas, sintaxis de 30
dinmico, definicin del proceso 182
direccionar archivos
Vase archivos relativos
direcciones
incremento mediante punteros 319
paso entre programas 317
diseo del programa 9
dispositivo de pantalla
DDS para 146
formato de registro 146, 148
distintivos de E-S 393
Divisin de Datos
archivos transaction 182, 184
argumentos para programa llamados 293

Divisin de Datos (continuacin)


caracteres DBCS 360
correlacin de, opcin del compilador 20, 45
descripcin 10
recursos de datos booleanos 185
Divisin de Entorno
clusula SEGMENT-LIMIT 325
y archivos transaction 180
y caracteres DBCS 359
Divisin de Identificacin
descripcin 10
y caracteres DBCS 359
Divisin de procedimientos
cambios del COBOL ANSI 74 352
declarativa USE FOR DEBUGGING 332
descripcin 10
especificacin de depuracin en 332
segmentacin 326
subdivisiones en 323
uso de la instruccin SET para especificar la
direccin 300
y archivos transaction 185
y caracteres DBCS 361
divisiones de programas
Divisin de Datos 20, 182, 184, 360
Divisin de Entorno 180, 325, 359
Divisin de Identificacin 10
Divisin de Procedimientos 185, 325, 326,
361367
necesarios 10
opcional 10
divisiones opcionales 10
do while, prueba para el fin de la lista en cadena
de la estructura 318
doble espacio 39
donde se puedan utilizar los caracteres
DBCS 358

E
EBCDIC, definicin de caracteres 409
eficacia aumentada 22
ejecucin de programas COBOL/400
descripcin 53
lista de respuestas del sistema y modalidades
de respuesta 54
ejemplos
archivo FORMATFILE 244
archivos de impresora descritos
externamente 247
COBOL y archivos 111

ejemplos (continuacin)
condicin END-OF-PAGE 245
controles de compromiso 99, 103
correlacin de Divisin de Datos 45
datos grficos de longitud variable 141
DDS
generacin de clave 127
palabra clave CONCAT 128
palabra clave RENAME 130
palabra clave SST 132
para subarchivos 167, 169
para un archivo de dispositivo de
pantalla 146, 148
para un archivo de referencia de
campo 113
para un formato de registro 115
para un formato de registro con la palabra
clave ALIAS 117
para varios archivos de dispositivo 170
entrar CRTCBLPGM desde la lnea de mandatos 29
especificaciones de formato de registro 113,
116
estructura de programa 9
frase ROLLING 205
indicadores 154
instruccin COPY en instruccin
PROCESS 38
listado de mensajes de diagnstico 49
listado de mensajes FIPS 47
listado de opciones del compilador 20, 38
listado de referencias cruzadas 49
listado fuente 42
longitud de un campo de longitud variable 138
mensajes de visualizacin SEU 343
MOVE con punteros 301
proceso de archivos
archivos de secuencia 371, 373
archivos indexados 376, 378
archivos relativos 382, 384
programas de aplicacin de estaciones de
trabajo
actualizacin de pago 227
consulta de transacciones 210
consulta pedidos 216
punteros
alineacin 297
inicializacin con NULL 299
lista en cadena de procesos 316
traspaso de tems que contienen 303
y clusula REDEFINES 298

ndice

417

ejemplos (continuacin)
punteros (continuacin)
y registro especial LENGTH OF 299
y resultados de MOVE 301
punto de interrupcin 60
rastreo 66
recuperacin de errores 86
registro especial LENGTH con punteros 299
resultados COPY DDS 116, 125
START genrico 253, 254
unidades de ejecucin
con programa compartido 289
unidad nica 287
varias de ejecucin consecutiva 287
varias, de ejecucin simultnea 290
uso de verbos mediante listado de la
cuenta 45
utilizacin de punteros en una lista en
cadena 316
varios archivos de dispositivo 174
va de acceso de un archivo indexado 258
vuelco con formato 393
elecciones mostradas en la sintaxis 3
elementos de datos del puntero
definicin 295
elementos fundamentales 301
elementos de lenguaje
Vase estructura de programas
eliminados, inicializacin de archivos con
registros 23, 263
enlace, configuracin de la direccin de tems
de 300
Entorno de Desarrollo Cooperativo/400
entrada de control de archivo 93
de la Divisin de Entorno 180
entrada de proceso de archivo
TRANSACTION 180
entrada de descripcin de datos para datos
booleanos 151
entrada-salida, proceso de verbos de
desde la Versin 1, Release 3 84
entrada, proceso de verbos de entrada
desde la Versin 1, Release 3 84
entrar CRTCBLPGM desde la lnea de
mandatos 29
entrar CRTCBLPGM desde un programa CL 29
entrar programas fuente 9, 11
error, ejemplo de recuperacin de 86
errores
duplicacin 270

418

COBOL/400 Gua del usuario

errores (continuacin)
frase ADVANCING con archivos
FORMATFILE 245
errores de codificacin 58
errores de duplicacin 270
errores de sintaxis
Vase errores de sintaxis
errores en tiempo de compilacin 58
errores en tiempo de ejecucin, comprobacin
para deshacer edicin 279
errores que conviene evitar 58
espaciado cudruple 39
espacio, definicin de punteros de 295
espacios del usuario
acceso mediante API 305
especificaciones de descripcin de datos (DDS)
archivos descritos externamente 252
archivos descritos por programa 110
archivos FORMATFILE 244
archivos mltiples de dispositivo 170
archivos TRANSACTION 145
campos clave 252
campos de datos 138
campos de datos grficos 139
campos de hora 138
campos de indicacin de la hora 138
campos de longitud variable 137
campos SAA 138
campos SST 132
claves de atencin de mandatos (CA) 146
claves de funcin 146
comprobacin de validez de la estacin de
trabajo 146
DD, descripcin de la opcin 119
DDR, descripcin de la opcin 119
DDS, descripcin de la opcin 119
DDSR, descripcin de la opcin 119
definicin 146
descripcin 112
ejemplos
especificacin de un formato de
registro 115
especificaciones para un archivo de bases
de datos 116
formatos, estructuras de datos generadas
por 214
generacin de claves 127
palabra clave CONCAT 128
palabra clave RENAME 130
palabra clave SST 132
para un archivo de dispositivo de
pantalla 148

especificaciones de descripcin de datos (DDS)


(continuacin)
ejemplos (continuacin)
para un archivo de referencia de
campo 113
para un formato de registro de
subarchivo 167, 169
programas de estacin de trabajo 210, 241
va de acceso en clave para un archivo
indexado 258
funcin de 146
gestin de pantalla 146
incorporacin de descripcin en un
programa 114
mandatos Crear Archivos 110
palabra clave CONCAT 128
palabra clave RENAME 130
subarchivos 164
sufijos 129
utilizacin de palabras clave 112
estaciones de trabajo
comprobacin de validez 146
comunicaciones entre 145
programas de ejemplo
actualizacin de pagos 227
consulta de pedidos 216
consulta de transacciones 210
estado de archivo
0Q 263
9N 87
9Q 263
cmo se establece 75
desde supervisores de pantalla 76
despus de E/S 87
ejemplos codificados 373
instrucciones que afectan 321
interno y externo 73
obtencin 108
estado de archivo externo 73
estado de archivo interno 73
estado de bloqueo 97
estado de bloqueo compartido-para-lectura 98
estado de bloqueo de
lectura-exclusiva-permitida 98
estndar, ANSI X3.23-1985 xiii
estndares industriales xiii
estructura de programa 9
Vase tambin estructura de programa
campo de datos 122
correlacin de la Divisin de Datos 45

estructura de programa (continuacin)


Divisin de Datos 184
Divisin de Entorno 180
Divisin de Identificacin 10
Divisin de procedimientos 185
divisiones opcionales y obligatorias 10
ejemplo 9, 10
estructura de programa 9
indicador 122, 123
nivel de formato (registro) 122
nivel del soporte del lenguaje 341
estructuras de campos de datos 122
estructuras de indicadores 123
estructuras de nivel de formato (registro) 122
examinar in listado del compilador
examinar un listado del compilador
Vase programa de utilidad para la entrada del
fuente (SEU)
excepciones 16, 54, 74, 85
expresiones 276, 362
EXTEND, definicin de la modalidad 98

F
Federal Information Processing Standard (FIPS)
COBOL estndar 1986 348
con caracteres DBCS 369
descripcin 347
desviaciones de sealizacin desde 25, 347,
369
estndares a los que el compilador se
adjunta xiii
mensajes 47, 345, 347
mdulos estndar 348
opciones 25
parmetro FLAGSTD 25, 47
FIB (bloque de informacin de archivo) 73
figurativa, constante NULL 299
FILLER
campos de coma flotante 133
fin de la lista en cadena, prueba para el 318
finalizacin de un programa llamado 286
FIPS, total de violaciones sealizadas 48
flechas que aparecen en la sintaxis 3
flotante, prueba de deshacer edicin 279
formato de archivo fuente
descripcin 10
longitud de registro 10
segmentos de programa 323, 324

ndice

419

formato de codificacin 6, 11
formato de registro
campos 146
composicin para el dispositivo de
pantalla 146
DDS para subarchivos 167, 169
ejemplo de especificacin de formato de
registro 110, 113, 116
especificacin, utilizacin de palabras clave
DDS en 112
indicadores 149
subarchivos 165
formato, notas adicionales sobre el nombre
de 133
formatos de codificacin proporcionados por
SEU 11
formatos de E/S 125
formatos de entrada/salida 125
formatos que utilizan el SEU
Vase programa de utilidad para la entrada del
fuente
frase ADVANCING PAGE 352
frase CORRESPONDING 268
frase END-OF-PAGE 352
frase END-READ 198, 201
frase END-REWRITE 202
frase END-WRITE 209
frase FOOTING 352
frase FORMAT 190, 197, 199, 201
frase GIVING 351, 352
frase INTO 196, 351
frase INVALID KEY 200, 202, 209
funcin desde la Versin 1, Release 3 84
frase NEXT MODIFIED 199
frase NO DATA 197
funcin desde la Versin 1, Release 3 84
frase NO REWIND 352
frase NOT AT END 197, 200
funcin desde Versin 1, Release 3 84
frase NOT INVALID KEY 200, 202, 209
funcin desde Versin 1, Release 3 84
frase REEL/UNIT 352
frase RELATIVE KEY 351
frase REMAINDER 352
frase ROLLING 205
frase STARTING 204
frase TERMINAL 191, 197, 200, 202, 203, 208
frase USING 352
frases
ADVANCING 243

420

COBOL/400 Gua del usuario

frases (continuacin)
ADVANCING PAGE 352
AT END 197, 200
CORRESPONDING 20
END-OF-PAGE 352
END-REWRITE 202
END-WRITE 209
FOOTING 352
FORMAT 190, 197, 199, 201
GIVING 351, 352
INDICATORS 152, 191
INTO 196, 351
INVALID KEY 200, 202, 209
NEXT MODIFIED 199
NO DATA 197
NO REWIND 352
NOT AT END 197, 200
NOT INVALID KEY 200, 202, 209
REEL/UNIT 352
RELATIVE KEY 351
REMAINDER 352
ROLLING 205
STARTING 204
SUBFILE 191
TERMINAL 191, 197, 200, 202, 203, 208
USING 352
fuente, ejemplo de listado fuente 42

G
generacin de claves 127
generacin de formatos de E/S 125
generacin de la supervisin de mensajes 76
gestin de datos distribuido (DDM) 409
gestin de memoria
Vase segmentacin
Gestor para el Desarrollo de Aplicaciones/400
grupo, alineacin de punteros dentro de estructuras de 297
guin generado al copiar nombres ALIAS 119

H
herramientas para instalar programas fuente
hora, caracteres de separacin de la 39
hora, recuperacin de valores de 274

I
ICF
Vase archivo de funcin de comunicaciones
intersistemas

identificador
definicin en seccin de Almacenamiento de
Trabajo 270
llamo por 294
no referenciado 22
Identificadores de Juego Caracteres
(CCSID) 143
identificadores no referenciados 16
imprimir
edicin de valores de campo 244
en el rea de desbordamiento 244
espaciado 244
lneas mltiples 244
mantenimiento de formatos de impresin 244
paginacin 244
posicin del papel 243
salida desde el trabajo con la instruccin
WRITE 243
segn indicadores 244
independencia de dispositivo 93
independencia, dispositivo de 93
indexados, definicin de archivos 376
indicadores
asociada con claves de mandatos 146
clusula INDICATOR 152
consideraciones especiales para 152
consideraciones sobre el rendimiento 282
descripcin 121, 149
e tems de datos booleanos 151
ejemplo, utilizacin en programas de 154
en el rea de registro 150, 153
en un rea de indicador separada 150, 153,
282
entradas de descripcin de datos 151
estructuras 122
frase INDICATORS 152
palabra clave INDARA DDS 150
proceso del archivo TRANSACTION 149
programas de ejemplo 154
utilizacin 151
y la clusula ASSIGN 150
y la instruccin COPY 120, 124
informacin relacionada impresa
informacin sobre el control de dispositivo 149
inicializacin de almacenamiento 291
iniciar el compilador 15
inicio de sesin, deseditar prueba de 279
inicio de sesin, rendimiento y clusula PICTURE
de 280

instalacin del programa


Vase programa de utilidad para la entrada del
fuente (SEU)
instruccin
ACCEPT 108, 186, 362
ACQUIRE 187
ALTER 326
aritmtica, en proceso DBCS 364
CALL 327
CANCEL 352
CLOSE 188, 352
COMMIT 99
COPY 109, 120, 352, 368
DISPLAY 363
DIVIDE 352
DROP 189
EJECT 39
en diagramas de sintaxis 3
INSPECT 364
MERGE 327, 351, 367, 389
MOVE 335, 365
OPEN 189
PERFORM 326, 352
PROCESS 33, 356
puntos de interrupcin 59
READ 192, 351, 363
RELEASE 367
RETURN 351, 367
REWRITE 201, 363
ROLLBACK 99
salida del compilador 38
SEARCH 367
SET 365
SKIP 39
SORT 327, 389
START 363
START genrico 253
STOP 367
STRING 365
UNSTRING 365
USE 209
WRITE 203, 352, 364
instruccin ACCEPT 108, 186, 362
instruccin ACQUIRE 187
instruccin ALTER 326
instruccin CALL
a QCMDEXC 267
BY CONTENT, MOVE implcito 303
dentro de un programa segmentado 327
identificador BY CONTENT 292

ndice

421

instruccin CALL (continuacin)


identificador BY CONTENT LENGTH OF 292
identificador BY REFERENCE 292
literal BY CONTENT 292
nombre de registro BY REFERENCE
ADDRESS OF 292
por identificador 294
recursivo, descripcin de 285
uso de punteros 303
instruccin CANCEL 294, 321, 352
con programas no COBOL 291
instruccin *CBL 39
instruccin CLOSE 188, 352
instruccin COMMIT 99, 101
instruccin *CONTROL 39
COPY DDS, utilizacin con indicadores 124
instruccin COPY
cambios con el COBOL ANSI 74 352
campos clave 252
con ALL-FORMATS 120
DD, DDR, DDS o DDSR 118
descripcin 118
ejemplo de estructuras de datos generadas
por 214
ejemplos de generaciones de claves 127
en Seccin de Archivos 120
estructuras de campos de datos 122
instruccin COPY de formato-1 37
instruccin PROCESS que contiene una instruccin COPY 38
listado de instrucciones fuente 39
resultados DDS 116, 124
Seccin de Archivo exterior 120
supresin de instrucciones fuente 39
utilizar con archivos TRANSACTION 145
utilizar con instrucciones PROCESS 37
y caracteres DBCS 368
y coma flotante 133
y datos descritos externamente 119
instruccin COPY de formato-1 37
instruccin COPY de formato-2 16
instruccin DISPLAY 363
instruccin DIVIDE 352
instruccin DROP 189
instruccin EJECT 39
instruccin EXIT PROGRAM 286, 321
instruccin generada por compilador (STMT),
nmero de 44
instruccin genrica START 253

422

COBOL/400 Gua del usuario

instruccin GO TO 326
instruccin GOBACK 321
instruccin INSPECT 364
instruccin MERGE 327, 351, 367, 389
instruccin MOVE 335, 365
frase CORRESPONDING 268
utilizacin de punteros 301
instruccin OPEN 189
instruccin PERFORM 326, 352
instruccin PROCESS 356
mbito de las opciones con el mandato
CRTCBLPGM 38
consideraciones
alteracin temporal de archivos especificados por el programa 97
archivos DATABASE 251
archivos descritos por el programa y externamente 109
archivos DISK 251
bloqueo de archivos y registros 97
bloqueo de registros de salida 107
consideraciones sobre el control de compromiso 99
dependencia de dispositivo 93
desbloqueo de registros de entrada 107
mtodos de proceso para los tipos DISK y
DATABASE 251
spooling 95
visin general 267
COPY, utilizacin con la instruccin 37, 38
descripcin 33
especificacin de las opciones del
compilador 41
formato de 33
normas para 33
opciones 37
opciones del compilador especificadas en 33
opciones disponibles para 33
posicin de la instruccin 33
salida del compilador 38
tcnicas
actualizacin de archivos indexados 378
actualizacin de archivos relativos 384
Actualizacin y ampliacin de archivos
secuenciales 373
creacin de archivos indexados 376
creacin de archivos relativos 382
creacin de archivos secuenciales 371
proceso de archivos 371
recuperacin de archivos relativos 386

instruccin PROCESS (continuacin)


utilizacin para especificar las opciones del
compilador 33
instruccin READ 363
cambios en la utilizacin del COBOL ANSI
74 351
descripcin 192
formato no de subarchivo 196197
formato, subarchivo 199200
indicadores 153
recursos de proceso 191
frase FORMAT 190
instruccin RELEASE 367
instruccin RETURN 367
instruccin REWRITE
descripcin 201
formato 201, 202
indicadores 153
para archivos transaction descritos por el programa 201
para el archivo TRANSACTION 201
recursos de proceso 190, 191
y DBCS 363
instruccin ROLLBACK 99
lmite 100
instruccin SEARCH 367
instruccin SELECT
EXTERNALLY-DESCRIBED-KEY 127
instruccin SET 365
instruccin SKIP 39
instruccin SKIP1 39
instruccin SKIP2 39
instruccin SKIP3 39
instruccin SORT 327, 367, 389
instruccin SORT/MERGE 367
instruccin START 253, 363
instruccin STOP 367
instruccin STOP RUN 286, 321
instruccin STRING 365
instruccin TITLE 39
instruccin UNSTRING 365
instruccin USE
descripcin 209
ejemplos codificados 373, 374
EXCEPTION/ERROR para archivo
TRANSACTION 209
formato 209
instruccin WRITE
cambios del COBOL ANSI 74 352
descripcin 203

instruccin WRITE (continuacin)


formato, no de subarchivo 203205,
208209
indicadores 153
para archivos TRANSACTION 203
para archivos transaction descritos por el programa 203
recursos de proceso 190191
y DBCS 364
instruccin, longitud mxima de 11, 12
instrucciones ACCEPT y DISPLAY ampliadas 23
instrucciones CICS (Sistema de Control de la
Informacin del Cliente) 13
instrucciones de bifurcacin de
procedimientos 367
instrucciones del Lenguaje de Consulta Estructurada (SQL) 13
instrucciones del Sistema de Control de la Informacin del Cliente (CICS) 13
instrucciones SQL (Lenguaje de Consulta Estructurada) 13
interfaces de programa de uso general
descripcin ix
manejo de errores 72
QCMDEXC 29, 267
Interfaces del Programa de Aplicacin (API)
manejo de errores 55, 72
utilizacin con punteros 305
International Standards Organization (ISO) xiii
introduccin al COBOL/400 1
IRP (representacin intermedia de programa)
Vase representacin intermedia de programa
(IRP)
tems agrupados por nivel 48
tems binarios de 8 bytes y rendimiento 281
tems binarios de ocho bytes y rendimiento 281
tems de datos
atributos de 47
definicin como un puntero 296
en enlace de subprograma 293
paso, con su longitud 292
referencia de subseries 274
tems de datos de puntero elementales 301
tems de datos no referenciados 22
tems decimales empaquetados 280
tems numricos
movimiento con deseditar 277
y rendimiento 280

ndice

423

L
LDA (rea de datos local) 319
lectura en clave
liberacin de un registro ledo para la actualizacin 98
limitaciones
parmetro TGTRLS 32
limitations 93
lmite
definicin 100
registro 23
violacin 77, 263
lmite de registro 23
lmites de archivo 263
lmites de tamao interno 15
lmites, interno, tamao 15
lista de palabras reservadas y ACCEPT/DISPLAY
ampliada 23
lista de respuestas al sistema 54
listado de resumen de mandatos 40
listado OPTIONS 41
listados
archivo de salida por omisin 25
bsqueda de errores de sintaxis 40
caracteres DBCS en 369
correlacin de la Divisin de Datos 45, 63
ejemplo, listado fuente de 19, 42, 44
ejemplos de 41
especificacin del archivo de salida para 25
examinar
Vase programa de utilidad de entrada
fuente
longitud mnima de registro 25
mensajes
descripcin 50
desde el compilador COBOL/400 345
ejemplo 49
mensajes FIPS 47
opciones 41
opciones del compilador activas 20
referencias cruzadas 49
resumen de mandatos 40
utilizacin de verbos por medio de la
cuenta 20, 45
listados de referencias cruzadas
descripcin del listado 49
ejemplo 49
opciones CRTCBLPGM 19, 21
prueba, utilizacin en 63
y puntos de interrupcin 59

424

COBOL/400 Gua del usuario

literales DBCS 356358, 367, 368


literales no numricos 20
literales, delimitacin de 20
local (LDA), definicin del rea de datos 319
lgica de segmentacin 324
longitud de registros en archivo fuente 10
longitud de registros en archivo fuentee 10
longitud mxima de instruccin 11, 12
longitud mxima de instruccin fuente 11, 12

LL
llamada al compilador COBOL 15
llamadas entre programas que utilizan
punteros 303
llamar por identificador 294

M
mandato ADDMSGD (Aadir Descripcin de
Mensaje) 347
mandato ALCOBJ (Asignar Objeto) 97
mandato ALterar Temporalmente a Archivo de
Disquete (OVRDKTF) 94
mandato Alterar Temporalmente Archivo de Mensajes (OVRMSGF) 347
mandato Asignar Objeto (ALCOBJ) 97
mandato Cambiar Depuracin (CHGDBG) 57
mandato Cambiar Variable de Programa
(CHGPGMVAR) 65
mandato Crear Lista de Autorizaciones
(CRTAUTL) 28
mandato Crear Programa COBOL (CRTCBLPGM)
descripcin de 6
entrar desde la lnea de mandatos 29
entrar desde un programa CL 29
parmetro AUT 28
parmetro CVTOPT 24, 35
parmetro DUMP 28
parmetro EXTDSPOPT 36
parmetro FLAG 27, 36
parmetro FLAGSTD 25, 36, 38
parmetro GENLVL 19, 33
parmetro GENOPT 21, 35
parmetro ITDUMP (n) 28
parmetro MSGLMT 24
parmetro OPTION 19, 34, 38
parmetro PGM 18
parmetro PRTFILE 25
parmetro REPLACE 27
parmetro SAAFLAG 26, 36, 38

mandato Crear Programa COBOL (CRTCBLPGM)


(continuacin)
parmetro SRCFILE 18
parmetro SRCMBR 18
parmetro TEXT 19
parmetro TGTRLS 27
parmetro USRPRF 27
parmetros, descripcin de 1832
sintaxis de 30
solicitud, utilizacin de las pantallas de 16
mandato CRTAUTL (Crear Lista de Autorizaciones) 28
mandato CRTCBLPGM
Vase mandato Crear Programa COBOL
mandato CHGDBG (Cambiar Depuracin) 57
mandato CHGPGMVAR (Cambiar Variable de
Programa) 65
mandato DSPTRCDTA (Visualiza Datos de
Rastreo) 67
mandato Finalizar Depuracin COBOL
(ENDCBLDBG) 331, 332
mandato GRTOBJAUT (Otorgar Autorizacin de
Objeto) 28
mandato Iniciar Depuracin (STRDBG) 57
mandato Iniciar Depuracin COBOL
(STRCBLDBG) 330, 332
mandato Iniciar Programa de Utilidad para la
Entrada del Fuente Start (STRSEU) 9
mandato MONMSG (Supervisar Mensaje) 16
mandato Otorgar Autorizacin de Objeto
(GRTOBJAUT) 28
mandato OVRDKTF 94
mandato OVRMSGF 347
mandato Revocar Autorizacin de Objeto
(RVKOBJAUT) 28
mandato RVKOBJAUT (Revocar Autorizacin de
Objeto) 28
mandato STRCBLDBG (Iniciar Depuracin
COBOL) 330, 332
mandato STRDBG (Iniciar Depuracin) 57
mandato STRSEU (Iniciar Programa de Utilidad
para la Entrada del Fuente) 9
mandato Supervisar Mensaje (MONMSG) 16
mandato Visualizar Datos de Rastreo
(DSPTRCDTA) 67
mandatos
Alterar Temporalmente Archivo de Disquete
(OVRDKTF) 94
Alterar Temporalmente Archivo de Mensajes
(OVRMSGF) 347

mandatos (continuacin)
Aadir Descripcin de Mensaje
(ADDMSGD) 347
Asignar Objeto (ALCOBJ) 97
Cambiar Depuracin (CHGDBG) 57
Cambiar Puntero (CHGPTR) 65
Cambiar Puntero de Nivel Superior
(CHGHLLPTR) 65
Cambiar Variable de Programa
(CHGPGMVAR) 65
Crear Lista de Autorizaciones (CRTAUTL) 28
Crear Programa COBOL (CRTCBLPGM)
Vase mandato Crear Programa COBOL
Finalizar Depuracin COBOL
(ENDCBLDBG) 331, 332
Iniciar Depuracin (STRDBG) 57
Iniciar Depuracin COBOL
(STRCBLDBG) 330, 332
Iniciar Programa de Utilidad para la Entrada del
Fuente (STRSEU)
Vase programa de utilidad para la entrada
del fuente
Otorgar Autorizacin de Objeto
(GRTOBJAUT) 28
Supervisar Mensaje (MONMSG) 16
Visualizar Datos de Rastreo
(DSPTRCDTA) 67
Visualizar Variable de Programa
(DSPPGMVAR) 65
Mandatos CL (lenguaje de control)
emisin mediante QCMDEXC en un
programa 267
para comprobar programas 57
para ejecutar programas 7
mandatos del lenguaje de control
Vase mandatos CL
mandatos, utilizacin de la sintaxis de 3
manejo de errores 71
API 55, 72
estndar 79
no estndar 81
visin general 71
manejo de errores de datos con deshacer
edicin 279
manejo de errores estndar 71, 79
manejo de errores no estndar 81
marcas de servicio x
marcas registradas x
mxima longitud de registro de los archivos
creados dinmicamente 23

ndice

425

mensajes
campo en el listado de mensajes de diagnstico 50
compilacin 345
diagnstico 49
estadsticas 50
FIPS 345
Herramientas para el Desarrollo de Aplicaciones 343
interactivo 343
niveles de gravedad 19, 25, 346
respuesta en un entorno interactivo 345
SAA, sealizacin 48
tiempo de compilacin 343
tiempo de ejecucin 344
y manejo de errores estndar 71
tipos 343
mensajes de diagnstico 49
metodologa para la instalacin de programas 9
mtodos de proceso para archivos
DATABASE 251
mtodos de proceso para archivos DISK 251
miembros 97
migracin
a COBOL ANSI 85 351
a lenguaje COBOL/400 351
programas COBOL ANSI 74 351
modalidad de acceso 182, 251, 260
DYNAMIC 257
RANDOM 257
modalidad de acceso dinmica 166, 182, 260,
264
modalidad de acceso secuencial 23, 182, 197,
199, 261, 262
modalidades de respuesta 54
modificacin de referencia
calcular desplazamiento 303
descripcin 274
e instruccin INSPECT 276
justificacin a la izquierda 276
recuperar valor de hora 274
y opcin *RANGE 22
mdulo clasificar-fusionar 341
mdulo de comunicaciones 341
mdulo de E-S relativo 340
mdulo de manipulacin del texto fuente 341
mdulo de ncleo 340
mdulo del transcriptor de informes 341
mdulo entre programas 341

426

COBOL/400 Gua del usuario

mdulos (MGT), definicin de tabla global


de 393
mdulos de proceso funcional 340
mdulos de proceso opcional 341
mdulos E-S secuencial 340
mdulos E/S indexados 341
MSGID y campo de nivel de gravedad 50

N
name, assignment 93, 150, 181, 359
necesario
clusulas 3
divisiones 10
elementos en la sintaxis 3
nivel de bloqueo
(*CS), bajo control de compromiso 100
mximo, bajo control de compromiso 100
mnimo, bajo control de compromiso 100
nivel de campo de tems de datos (LVL) 46
nivel-gravedad 19, 27
nivel de gravedad de los mensajes 19, 25, 346
opcin nivel-gravedad-mxima 25
nivel de soporte de lenguaje 339, 340, 341, 348
niveles de diagnstico 346
no coincidentes, reducir aparicin de
registros 293
NO LOCK, rendimiento de frase 98, 283
nombre DD 119
nombre DDR 119
nombre DDS 119
nombre DDSR 119
nombre de alias 119
nombre de asignacin 93, 150, 181, 359
opcin-nombre-lista-autorizacin 28
nombre-programa 18
nombre-archivo-fuente 18
nombre-miembro-archivo-fuente 19
nombres de campo
-DDS aadidas a 129, 131
construccin de 122
notas adicionales 133
nombres de nivel de grupo 122
nombres de objeto OS/400 16
nombres definidos al especificar
GENOPT(*NOUNREF) 16
notacin, sintaxis de 2
notas acerca de la programacin
nmero de entradas en la tabla de definicin de
objetos (ODT) 15, 22

nmeros de referencia 19, 44, 50


nmeros-segmentos 323326

O
objetivo de este manual xi
objeto de programa
compilador, especificacin de opciones del 21
comprobacin de rango subindexado 22
especificacin de autorizacin a 28
optimizacin, especificacin en tiempo de compilacin de 22
salida desde el compilador 15
objeto, definicin del programa 6
observar un listado del compilador
Vase programa de utilidad para entrada del
fuente (SEU)
ODP (abrir va de acceso de datos) 99
ODP (va de acceso de datos abierta)
compartida 99
ODT (Tablas de Definicin de Objetos) 22
opcin *ACCUPDALL 26
opcin *ACCUPDNE 26
opcin *ALL 28
opcin *APOST 20
opcin *ATR 22
opcin *BLANK 19
opcin *BLK 23
opcin *CRTF 23
opcin *CURLIB 18, 25
opcin *CURRENT 27, 32
opcin *CHANGE 28
opcin *DATETIME 24
opcin *DDSFILLER 22
opcin *DEB1 26
opcin *DEB2 26
opcin *DFRWRT 26
opcin *DUMP 22
opcin *DUPKEYCHK 23, 282
opcin *EXCLUDE 28
opcin *EXTACCDSP 23
opcin *FLAG 26, 38
opcin *FS21DUPKY 24
opcin *GEN 19
opcin *GRAPHIC 24
opcin *HIGH 25
opcin *INTERMEDIATE 25
opcin *INZDLT 23, 263
opcin *LIBCRTAUT 28

opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin
opcin

*LIBL 18, 25
lmite de mensaje 25
*LINENUMBER 20
*LIST 21
*LSTDBG 21
*MAP 20, 38
*MINIMUM 25
nivel-release 27, 32
*NOATR 22
*NOBLK 23
*NOCRTF 23
*NODATETIME 24
*NODDSFILLER 22
*NODEB 26
*NODFRWRT 26
*NODUMP 22
*NODUPKEYCHK 23
*NOEXTACCDSP 23
*NOFIPS 25
*NOFLAG 26
*NOFS21DUPKY 24
*NOGEN 19
*NOGRAPHIC 24
*NOINZDLT 23
*NOLIST 21
*NOLSTDBG 21
*NOMAP 20
*NOMAX 25
nombre-archivo 25
nombre-biblioteca 18, 25
*NONUMBER 20
*NOOBSOLTE 26
*NOOPTIMIZE 22
*NOOPTIONS 20
*NOPATCH 22
*NOPRINT 21
*NOPRTCORR 20
*NORANGE 22, 282
*NOSECLVL 20
*NOSEG 25
*NOSEQUENCE 19
*NOSOURCE 19
*NOSRCDBG 20
*NOSTDERR 23
*NOSTDINZ 24
*NOSYNC 22
*NOUNDSPCHR 26
*NOUNREF 22
*NOVARCHAR 24

ndice

427

opcin *NOVBSUM 20
opcin *NOXREF 19, 21
opcin *NUMBER 20
opcin *OBSOLETE 26
opcin *OPTIMIZE 22
opcin *OPTIONS 20, 34, 38
opcin *OWNER 27
opcin *PGM 18
opcin *PGMID 18
opcin *PRINT 21
opcin *PRTCORR 20
listado de ejemplo 268
opcin *PRV 27, 32
opcin QSYSPRT (archivo de impresora por
omisin) 25
opcin *QUOTE 20
opcin *RANGE 22
modificacin de referencia 274
opcin REUSEDLT
Vase volver a utilizar registros eliminados
opcin *SECLVL 20
opcin *SEG1 26
opcin *SEG2 26
opcin *SEQUENCE 19
opcin *SOURCE 19, 38
opcin *SRCDBG 21
opcin *SRCMBRTXT 19
opcin *STDERR 23
opcin *STDINZ 24
opcin *SYNC 23
opcin *UNDSPCHR 26
opcin *UNREF 22
opcin *USE 28
opcin *USER 27
opcin V2R1M0 32
opcin V2R1M1 32
opcin V2R2M0 32
opcin *VARCHAR 24
opcin *VBSUM 20, 38
opcin *XREF 19, 21, 38
opcionales, tems de sintaxis 3
opciones
datos, opciones *NORANGE de formato
de 282
de parmetros del mandato
CRTCBLPGM 1832
listado 41
para la instruccin PROCESS 37
segmentacin 325

428

COBOL/400 Gua del usuario

opciones del compilador


Vase tambin instruccin PROCESS
parmetros de mandato CRTCBLPGM
*ACCUPDALL 26
*ACCUPDNE 26
*ALL 28
*APOST 20
*ATR 22
*BLANK 19
*BLK 23
como se especifica en la instruccin
PROCESS 33
compilacin por lotes 37
comprobar errores de secuencia 19
comprobar rangos de subndice en tiempo de
ejecucin 22
contaje de utilizacin de verbos 20
crear cdigo objeto 19
crear correlacin de Divisin de Datos 20
crear listado de referencias cruzadas 19, 21,
49
crear listado fuente 19, 42
*CRTF 23
*CURLIB 18, 25
*CURRENT 27, 32
*CHANGE 28
*DATETIME 24
*DDSFILLER 22
*DEB1 26
*DEB2 26
delimitador para literales booleanos y no numricos 20
descripcin-texto 19
*DFRWRT 26
*DUMP 22
*DUPKEYCHK 23
especificacin
*EXCLUDE 28
*EXTACCDSP 23
*FLAG 26, 38
*FS21DUPKY 24
*GEN 19
opcin *GRAPHIC 24
*HIGH 25
incluir atributos para el IRP 22
*INTERMEDIATE 25
*INZDLT 23
*LIBCRTAUT 28
*LIBL 18, 25
opcin lmite-mensaje

opciones del compilador (continuacin)


*LINENUMBER 20
*LIST 21
listado de opciones del compilador 38, 41
listar opciones del compilador activas 38, 42
*LSTDBG 21
*MAP 20, 38
*MINIMUM 25
opcin nivel-gravedad 19, 27
opcin nivel-gravedad-mxima 25
*NOATR 22
*NOBLK 23
*NOCRTF 23
opcin *NODATETIME 24
*NODDSFILLER 22
*NODEB 26
*NODFRWRT 26
*NODUMP 22
*NODUPKEYCHK 23
*NOEXTACCDSP 23
*NOFIPS 25
*NOFLAG 26
*NOFS21DUPKY 24
*NOGEN 19
*NOINZDLT 23
*NOLIST 21
*NOLSTDBG 21
*NOMAP 20
*NOMAX 25
opcin nombre-archivo 25
opcin nombre-lista-autorizacin 28
opcin nombre-archivo-fuente 18
opcin nombre-miembro-archivo-fuente 19
nombre-programa 18
*NONUMBER 20
*NOOBSOLETE 26
*NOOPTIMIZE 22
*NOOPTIONS 20
*NOPATCH 22
*NOPRINT 21
*NOPRTCORR 20
*NORANGE 22
*NOSECLVL 20
*NOSEG 25
*NOSEQUENCE 19
*NOSOURCE 19
*NOSRCDBG 20
*NOSTDERR 23
*NOSTDINZ 24
*NOSYNC 22

opciones del compilador (continuacin)


*NOUNDSPCHR 26
*NOUNREF 22
*NOVARCHAR 24
*NOVBSUM 20
*NOXREF 19, 21
*NUMBER 20
*OBSOLETE 26
opcin nivel-release 27, 32
opcin nombre-biblioteca 18, 25
opcin QSYSPRT (archivo de impresora por
omisin) 25
optimizar cdigo fuente 22
*OPTIMIZE 22
*OPTIONS 20, 38
*OWNER 27
parmetros del mandato
CRTCBLPGM 1832
*PATCH 22
*PGM 18
*PGMID 18
*PRINT 21
PROCESS, uso para la especificacin de la
instruccin 33
programa, caracteres DBCS en listados
de 369
*PRTCORR 20
*PRV 27, 32
QLBLSRC (archivo fuente por omisin) 18
*QUOTE 20
*RANGE 22
*SECLVL 20
*SEG1 26
*SEG2 26
*SEQUENCE 19
*SOURCE 18, 19, 38
*SRCDBG 21
*SRCMBRTXT 19
*STDERR 23
*STDINZ 24
supresin de mensajes de nivel secundario 20
supresin del listado fuente 42
*SYNC 23
*UNDSPCHR 26
*UNREF 22
*USE 28
*USER 27
utilizar nmeros de secuencia suministrado por
el usuario 20
utilizar nmeros de secuencia utilizados por el
compilador 20

ndice

429

opciones del compilador (continuacin)


valor V2R1M0 para la opcin nivel-release 32
valor V2R1M1 para la opcin nivel-release 32
valor V2R2M0 para la opcin nivel-release 32
*VARCHAR 24
*VBSUM 20, 38
visin general 6
*XREF 19, 21, 38
y comprobacin de sintaxis con SEU 12
OPEN-FEEDBACK 362
OPEN, aumento de velocidad en operacin 99
operacin CLOSE 23
operacin de E-S 393
operacin ms eficaz 22
operaciones de archivo para el archivo de impresora 243
operaciones de clculo
en campos de longitud fija 138
operadores aritmticos 3
operadores aritmticos y lgicos 3
operadores lgicos 3
optimizacin del almacenamiento
Vase segmentacin
optimizacin del cdigo 22
orden de las clusulas 3
organizacin de archivo 262

P
palabra clave ALIAS 117
palabra clave CONCAT 128
palabra clave INDARA 124
palabra clave RENAME 130
palabra clave SST 132
palabra reservada -DDS se aade a 129, 133
palabras clave
DDS 117, 128, 130, 132
en diagramas de sintaxis 2
INDARA 124
pantalla, definicin de los datos de formato
de 146
pantallas
Vase tambin pantallas
especificaciones de descripcin de datos (DDS)
para 146
Mensajes de visualizacin SEU 343
Pantalla de solicitud CRTCBLPGM 17
pantalla de solicitud STRCBLDBG 330
pantalla de visualizacin ENDCBLDBG 331
para programas de ejemplo
actualizacin de pagos 238, 239, 240
consulta de pedidos 226, 227

430

COBOL/400 Gua del usuario

pantallas (continuacin)
para programas de ejemplo (continuacin)
consulta de transacciones 215
subarchivos 165
visualizar mensajes de programa 344
parmetro AUT para el mandato
CRTCBLPGM 28
parmetro CVTOPT 24, 35
parmetro DUMP para el mandato
CRTCBLPGM 28
parmetro EXTDSPOPT del mandato
CRTCBLPGM 36
parmetro FLAG para el mandato
CRTCBLPGM 27, 36
parmetro FLAGSTD para el mandato
CRTCBLPGM 25, 36, 47
parmetro GENLVL para el mandato
CRTCBLPGM 19, 33
parmetro GENOPT para el mandato
CRTCBLPGM 21, 35
parmetro ITDUMP para el mandato
CRTCBLPGM 28
parmetro MSGLMT 24
parmetro OPTION para el mandato
CRTCBLPGM 19, 38
parmetro PGM para el mandato
CRTCBLPGM 18
parmetro PRTFILE para el mandato
CRTCBLPGM 25
parmetro REPLACE para el mandato
CRTCBLPGM 27
parmetro SAAFLAG para el mandato
CRTCBLPGM 26, 36
parmetro SRCFILE para el mandato
CRTCBLPGM 18
parmetro SRCMBR para el mandato
CRTCBLPGM 18
parmetro TEXT para el mandato
CRTCBLPGM 19
parmetro TGTRLS para el mandato
CRTCBLPGM 27, 32
parmetro USRPRF para el mandato
CRTCBLPGM 27
parmetros del mandato CRTCBLPGM 18
Vase tambin mandato Crear Programa
COBOL (CRTCBLPGM)
parmetros, descripcin en el programa
llamado 293
prrafo SPECIAL-NAMES 12, 243, 351

partes de un programa 9
partes de un programa COBOL
Vase estructura de programa
paso de direcciones entre programas 317
opcin *PATCH 22
perfil de usuario 27
pilas mostradas en la sintaxis 3
plantilla del programa 22
posicin de la instruccin PROCESS 33
posicin del papel 243
preface xi
principal, descripcin del programa 286
procedimiento USE
funcin desde Versin 1, Release 3 84
proceso de archivo
Vase archivos
proceso de archivo especfico 243
proceso de verbos de E/S
desde Versin 1, Release 3 84
programa (PGT), definicin de tabla global
de 393
Programa de Utilidad para la Entrada del Fuente
Vase SEU
programa fuente
compilacin 15, 329
conmutador y compilacin WITH DEBUGGING
MODE 329
cuenta de verbos utilizados 20
definicin 2
entrar programas fuente
Vase SEU (programa de utilidad para la
entrada del fuente)
lneas de depuracin 337
listado 19, 42
programas fuente de edicin
Vase SEU (programa de utilidad para la
entrada del fuente)
registro especial DEBUG-ITEM 335
programa llamado
definicin 285
programa objeto
compilador, especificacin de opciones del 21
comprobacin de rango subindexado 22
especificacin de autorizacin a 28
optimizacin, especificacin en tiempo de compilacin de 22
salida desde el compilador 15
programa segmentado 323
programa, caracteres DBCS en listados de 369

programa, definicin de la pila 285


programas de depuracin 57, 329
cambio del contenido de las variables 65
caractersticas disponibles 329
conmutador en tiempo de compilacin 329
conmutador en tiempo de ejecucin 69, 330
Datos, del listado IRP y de la correlacin de
Divisin de 63
DEBUG-CONTENTS 335
DEBUGGING MODE como conmutador en
tiempo de compilacin 329
declarativas, ejecucin de 333
descripcin 6, 57, 282
estado de archivo 108
funciones de 57
funciones OS/400 para 57
lnea, definicin de 337
lneas de un programa fuente 337
mandato ENDCBLDBG (Finalizar Depuracin
COBOL) 331, 332
mandato STRCBLDBG (Iniciar Depuracin
COBOL) 330, 332
mdulo de depuracin 341
procedimientos USE FOR DEBUGGING 332
puntos de interrupcin
consideraciones para el uso 65
descripcin 59
rastreos
consideraciones para el uso 68
descripcin 66
registro especial DEBUG-ITEM 335
visin general 6
visualizacin de elementos de tabla 62
visualizacin de variables 62
vuelco formateado 69
programas de llamada
BY CONTENT 291
BY REFERENCE 291
definicin 285
dentro de un programa segmentado 327
desde un programa no COBOL 281
para empezar en otro punto de entrada
uso de punteros 303
programas fuente de edicin 9
Vase tambin programa de utilidad para la
entrada del fuente (SEU)
puntero, definicin de la alineacin del 296
punteros
alineacin en los lmites
automticamente mediante FILLER 297
con bloqueos activos 297

ndice

431

punteros (continuacin)
alineacin en los lmites (continuacin)
tems de nivel 01 297
tems de nivel 77 297
asignacin de valor nulo 318
definicin 295, 296
definicin de alineacin 296
descripcin 295
desplazamiento entre tems de grupo 303
ejemplos
acceso al espacio de usuario 305
proceso de lista en cadena 316
en el almacenamiento de trabajo 297
en la instruccin CALL 303
en la instruccin MOVE 301
restricciones 301
en la seccin de archivos 297
en la seccin de Enlace 293
en los registros 299
en tablas 297
escritura 298
inicializacin 299
lectura 298
longitud de 295
manipulacin de tems de datos 296
proceso de una lista en cadena 316
valor nulo 318
y clusula REDEFINES 297
punteros de inicializacin 299
con constante figurativa NULL 299
puntos de interrupcin
como en la funcin OS/400 57
consideraciones para el uso 65
descripcin 59
ejemplo 60
rastreo, diferencias entren 66
utilizacin de 59, 64
visualizacin de elementos de tabla 62
visualizacin de variables 62
puntuacin 3

Q
QCMDEXC, utilizacin en un programa 29, 267
QLBLSRC (archivo fuente por omisin) 10, 18
QRLMAIN
MGTFUNC 281
QUOTE, valor de la constante figurativa 20

432

COBOL/400 Gua del usuario

R
rango de subndices 22
rastreo de un bucle 284
rastreos
como una funcin OS/400 57
consideraciones 68
descripcin 66
ejemplo 66
utilizacin 66
READ WITH NO LOCK 97, 100
realimentacin de E-S 57, 108, 109
realimentacin de E-S 362
RECORD KEYS vlida 252
recuperacin 86
archivos transaction 87
con control de compromiso 86
ejemplo 88
procedimiento en el programa 87
con un dispositivo adquirido 87
con varios dispositivos adquiridos 88
recursiva, definicin de llamada 285
redefinicin de formatos 125
redefinicin, nombre de nivel de grupo 122
redireccin de archivos 94, 97
referencia a otros manuales xi
referencia a una clave parcial 253
registro 335
registro especial ADDRESS OF 292, 300
descripcin 300
diferencia con ADDRESS OF calculado 300
registro especial LENGTH OF 292, 299
registros
bloqueo
actualizar registros de bases de datos 97
por COBOL 97
y E/S anmala 99
y rendimiento 283
bloqueo de la salida 107
desbloquear entrada 107
que contienen punteros 299
reduccin de no coincidencias 293
salvaguarda de secuencia de 261
registros compartidos 97
registros de entrada 107
registros especiales
ADDRESS OF 292
LENGTH OF 292
definicin implcita 299
en Divisin de Procedimientos 299

reinicializacin, evitar 125


release de destino 27, 32
remotos, comunicacin entre sistemas 145, 320
renuncias
ejemplos
envo de informacin a IBM
patentes ix
usuarios del Gobierno de los Estados Unidos
REPLACING, en COPY de formato 2 133
representacin intermedia de programa (IRP)
cmo listar 21
cmo listar los atributos 22
cmo utilizar 59
listado de ejemplo 64
listado de referencias cruzadas 21
respuesta a mensajes en un entorno
interactivo 345
restricciones 93
resumen de cambios
cambios efectuados en la Versin 2 Release
1.1
cambios efectuados en la Versin 2 Release 2
retardos, reduccin durante la inicializacin de la
duracin de los 263

S
S en clusula PICTURE 280
salida
compilador 38
compilador, visualizacin de 40
salida del compilador
Vase tambin mensajes
correlacin de Divisin de Datos 45
descripcin 38
ejemplos 38
examinar 40
Vase tambin programa de utilidad de programa fuente
listado de descripciones 38
listado de mensajes FIPS 47
listado de opciones 40, 41
listado de referencias cruzadas 49
listado de resumen de mandatos 40
mensajes 345
opciones CRTCBLPGM 38
opciones de listado 41
programa, caracteres DBCS en listados
de 369
salida del compilador 37, 38
supresin del listado fuente 42

salida, definicin del archivo de 371


salida, proceso de verbos de
desde Versin 1, Release 3 84
seccin almacenamiento de trabajo
definicin de identificadores 270
Seccin de Enlace
descripcin de datos a recibir 293
parmetros para un programa llamado 293
secuencia
combinacin de nmeros 20
errores, comprobacin de 19
indicador de error de secuencia (SI) 44
nmero 10
registros, salvaguarda de 261
secuencia de llegada 135, 260, 262
secuencia en clave 135, 251, 262, 265
segmentacin 281, 323327, 341, 389
segmento permanente 323
segmentos del programa 323
segmentos independientes 324
seguridad
especificacin de autorizacin al programa
objeto 28
mantenimiento durante la prueba 57
sealizacin FIPS
Vase Federal Information Processing Standard
sealizacin SAA 48, 349
SEU (programa de utilidad para la entrada del
fuente)
comprobacin de sintaxis 1113, 343
edicin de programas fuente 6, 9, 11
entrar programas fuente 6, 9, 11
errores
detectados por el compilador 58
errores comunes 58
errores de codificacin 58
listado 49
mensajes en tiempo de ejecucin 344
examinar un listado del compilador 40
formatos, utilizacin de 11
mandato Iniciar Programa de Utilidad para la
Entrada del Fuente (STRSEU) 9
parmetro TYPE 9
solicitudes y formatos 11
SIGN, definicin con la clusula LIKE de la clusula 270
smbolos utilizados en la sintaxis 3
sintaxis
clusulas opcionales y obligatorias 3
comprobacin en SEU 11, 12, 40

ndice

433

sintaxis (continuacin)
comprobacin, unidad de 12
del mandato CRTCBLPGM 30
diagramas, uso de 3
elementos necesarios 3
elementos opcionales 3
flechas 3
lneas de depuracin 337
notacin 2
palabras clave en 2
pilas 3
puntuacin 3
smbolos 3
sintaxis del programa, lnea de depuracin 337
sistema operativo OS/400
entrada/salida 149
funciones para la depuracin 57
independencia y dependencia de
dispositivos 93
informacin de control de dispositivos 149
lmites de tamao interno 15
mandatos de punto de interrupcin 60
nombres de objeto 16
prueba, funciones para 57
seguridad, mantenimiento durante la
prueba 57
y mensajes 347
solicitudes mediante SEU
Vase programa de utilidad para la entrada del
fuente
soporte DBCS
Vase soporte del conjunto de caracteres de
doble byte
soporte de la Interfaz Comn de Programacin
(CPI) 341
soporte del juego de caracteres de doble byte
(DBCS) 355369
abrir 368
bsqueda en una tabla 367
clasificacin 367
comentarios con caracteres DBCS 359
comprobacin 357
comunicaciones entre programas 368
definicin 408
en la Divisin de Datos 360
en la Divisin de Entorno 359
en la Divisin de Identificacin 359
en la Divisin de Procedimientos 361367
especificacin de literales DBCS 356
grfico 368

434

COBOL/400 Gua del usuario

soporte del juego de caracteres de doble byte


(DBCS) (continuacin)
habilitar programas COBOL 356
instruccin ACCEPT 362
instruccin PROCESS 355, 364
representacin de datos DBCS en trabajos por
lotes 367
y datos alfanumricos 365
soporte para el ANSI X3.23-1985 estndar 340
soporte SAA CPI (Interfaz Comn de Programacin) 341
soporte SAA de la Interfaz Comn de Programacin (CPI) 341
soprte CPI (Interfaz Comn de
Programacin) 341
spacing 39
spool de entrada 95, 96
spool de salida 95
spooling 95, 96
SQL incluido 13
subcampo 164166, 191
subcampo, contenido del registro especial
DEBUG-ITEM 335
subndice 277
subndice, especificar comprobacin de rango
de 22
subprograma 37, 286
enlace 293
subrayados convertidos en guiones 119
subrayados eliminados del final del nombre de
archivo 119
sufijo -DDS
aadido a la palabra reservada 129, 133
aadido al nombre de campo de clave 129,
131
supervisin de excepciones 16
supervisin, mensaje de 76
supresin de mensajes 347
supresin del listado fuente 42

T
Tabla de Definicin de Objetos (ODT) 22
tabla, atributos de los tems de 47
tabla, modificacin de referencia 275
tablas de codificacin 275
tamao del programa 22
tamao interno, lmite de 15
terminacin anmala del programa 54

terminacin del programa


anmala 54
con la instruccin CALL 352
consideraciones sobre el archivo 285
devolucin de control 286
inicializacin 291
instruccin STOP RUN 286
y la instruccin CALL 327
terminacin, programa de 54, 352
tiempo de ejecucin
conmutador 69, 330, 331
depuracin 69, 330
depuracin del conmutador 329
errores comunes 58
manejo de errores, deseditar 279
mensajes 344
y manejo de errores estndar 71
redireccin de archivos 94
subndice, especificacin de comprobacin de
rangos de 22
supervisin de excepciones 16
terminacin de programa 54
tipo de datos de fecha 138
tipo de datos de indicacin de la hora 138
tipo de datos de la hora 138
tipo de datos grfico DBCS 139
tipo de miembro
Vase tipo de miembro fuente
tipo de miembro CICSCBL 13
tipo de miembro CICSSQLCBL 13
tipo de miembro fuente
CICSCBL 13
CICSSQLCBL 13
compilacin 16
comprobacin de sintaxis 11, 13
especificacin 9, 11
SQLCBL 13
tipo de miembro SQLCBL 13
tipo OPEN 97
tipos de datos 137
fecha 138
grfico 139
hora 138
indicacin de la hora 138
restricciones para tipos de datos SAA 139
tipos de datos booleanos 20, 151, 185
tipos de datos grficos 139
restricciones 140
tipos de datos SAA

trabajo de prearranque
trabajo prearranque 320
trabajo, recuperacin de una anomala de 86
trabajos por lotes, representacin de datos DBCS
en 367
transferencia de control a otro programa 285
transferencia del control de programa 285
traspaso de datos 291
en grupos 293
traspaso de tems de datos y sus longitudes 292
triple espacio 39

U
UFCB (bloqueo de control de archivo de
usuario) 73
ltimo lugar, descripcin del estado utilizado
en 286
unidad de comprobacin de sintaxis 11
unidad de ejecucin
definicin 37, 285
ejemplos
con programa compartido 289, 290
unidad de ejecucin simple 287
varias, de ejecucin consecutiva 287
utilizacin de caracteres de doble byte 355
utilizacin de menos almacenamiento 22
utilizacin de REPLACING en la instruccin COPY
de formato 2 133
utilizacin de un subarchivo para
visualizar 164166
utilizacin de verbos mediante el listado de la
cuenta 45
utilizacin del lenguaje COBOL/400
Vase lenguaje COBOL/400

V
valor de la constante figurativa QUOTE 20
valores nulos 139, 318
valores por omisin, indicacin de 16
VALUE IS NULL 318
variables de programa
cambio 65
punteros 65
variables, cambio de valores durante la
prueba 65
varios archivos de dispositivo 170179, 187,
194, 200

ndice

435

varios campos de clave contiguos 252


varios miembros 97
verbos de E/S, proceso de
desde la Versin 1, Release 3 84
va de acceso
descripcin 134
ejemplo de archivos indexados 258
especificaciones 110
proceso de archivos 262
visin general 6
visualizacin de un listado del compilador
volver a utilizar registros eliminados
archivos indexados 252
archivos relativos 260
archivos secuenciales 261
vuelco con formato 57, 69, 393

40

X
X3F (carcter de sustitucin) en los datos

436

COBOL/400 Gua del usuario

143

Hoja de Comentarios
AS/400
COBOL/400 Gua del usuario
Versin 3 Release 1.0
Nmero de Publicacin SC10-9424-00
En general, est Ud. satisfecho con la informacin de este libro?
Muy
satisfecho
Satisfaccin general

Satisfecho Normal Insatisfecho

Muy
insatisfecho

Muy
bien

Bien

Aceptable

Insatisfecho

Muy
insatisfecho

Cmo valora los siguientes aspectos de este libro?

Organizacin
Informacin completa y precisa
Informacin fcil de encontrar
Utilidad de las ilustraciones
Claridad de la redaccin
Calidad de la edicin
Adaptacin a los formatos, unidades, etc. del pas

Comentarios y sugerencias:

Nombre

Compaa u Organizacin

Telfono

Direccin

IBM

Hoja de Comentarios
SC10-9424-00

Dblese por la lnea de puntos

Por favor no lo grape

Corte o Doble
Por la Lnea

Dblese por la lnea de puntos

PONER
EL
SELLO
AQUI

International Business Machines, S.A.


Centro de Traducciones y Publicaciones
Avda. Diagonal, 571
08029 Barcelona, Espaa

Dblese por la lnea de puntos

SC10-9424-00

Por favor no lo grape

Dblese por la lnea de puntos

Corte o Doble
Por la Lnea

IBM
Nmero de Programa:

5763-CB1

Printed in Denmark by IBM Danmark A/S

SC1-9424-

También podría gustarte