Programación Básica en Cobol para OS390 PDF
Programación Básica en Cobol para OS390 PDF
Programación Básica en Cobol para OS390 PDF
Cloud Mobility
Intelligence Centre
Student Manual
CONSEJERÍA DE EMPLEO,
TURISMO Y CULTURA
EDUCATION
S E R V I C E S
Programación básica en
.I. n
COBOL
.T ció
(Curso AD40)
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
Abril 2002
.I. n
.T ció
Tema 1.- Visión general del COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Visión general del COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
.
¿Qué es el COBOL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
C
Enunciado de un problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
.F a
Organigrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
C rm
Solución COBOL del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Resumen de la organización de un programa COBOL . . . . . . . . . . . . . . . . . . . . . . . . . 16
Información básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Elementos de un programa COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
to fo
Formato de una línea de COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Pasos a realizar con un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Tema 2.- Organización de un programa COBOL . . . . . . . . . . . . . . . . . . . . . . 23
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
ec o
IDENTIFICATION DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ENVIRONMENT DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
v
DATA DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Descripción de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
oy si
Cláusula PICTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Cláusula USAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Cláusula VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
c
Notación hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Redefinición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Ex
PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Entorno de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Conexión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Archivos de que dispone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Paso 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Paso 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Paso 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Paso 6 (opcional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Tema 3.- PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 1
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
1ª Parte.- La PROCEDURE DIVISION y las sentencias de asignación . . . . . . . . . . . 70
PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Párrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Sentencias de finalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Finalizadores de ámbito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
.I. n
Sentencia de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Opción CORRESPONDING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
.T ció
Asignaciones parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Sentencia SET TO TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Sentencia INITIALIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
.
2ª Parte.- Sentencias de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
.F a
Sentencia ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Sentencia SUBTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
C rm
Sentencia MULTIPLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Sentencia DIVIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Sentencia COMPUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3ª Parte.- Sentencias de control de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
to fo
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Sentencia PERFORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Sentencia IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Sentencia EVALUATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
ec o
DECLARATIVES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
pr lu
Paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Paso 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Paso 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
c
Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Tema 4.- Manejo de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Ex
__________________________________________________________________________
2 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del alumno
___________________________________________________________________________
.I. n
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Paso 2 (opcional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
.T ció
Tema 5.- Servicios de bibliotecario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Sentencia COPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
.
Tema 6.- Manejo de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
C
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
.F a
1ª Parte.- DATA DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
C rm
Cláusula OCCURS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2ª Parte.- PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subindices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sentencia SEARCH (búsqueda secuencial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sentencia SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
194
198
198
200
201
to fo
Sentencia SEARCH (búsqueda binaria) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Ejercicio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Tema 7.- Sentencias adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
ec o
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Sentencia INSPECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
v
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 3
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1ª Parte.- PROCEDURE DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Sentencia CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
2ª Parte.- DATA DIVISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
LINKAGE SECTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Otras consideraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
.I. n
¿Qué es un POINTER? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Sentencia SET ADDRESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
.T ció
Registros especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Ejercicio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Paso1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
.
Tema 10.- Unidad de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
C
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
.F a
Ejercicio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
C rm
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tema 11.- Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
255
257
257
258
261
to fo
Funciones de series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Otras funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Funciones que admiten ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Ejercicio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
ec o
Paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Apéndice.- Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
v
Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
oy si
Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Ejercicio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
pr lu
Ejercicio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Ejercicio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Ejercicio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
c
Ejercicio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Ex
Ejercicio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
__________________________________________________________________________
4 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
Realizar una introducción al COBOL
C
.F a
Transformar un problema comercial en una
solución en COBOL
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 5
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
¿Qué es el COBOL?
.I. n
¿Qué es el COBOL?
.T ció
IBM COBOL IBM COBOL
for MVS & VM for OS/390 & VM
.
MVS z-series
C
VM
.F a
COBOL
C rm IBM COBOL
for VSE/ESA
COmmon
Business
IBM ILE
COBOL for AS/400
to fo
VSE
Oriented i-series
Language
ec o
IBM COBOL
IBM VisualAge
Set for AIX
p-series x-series
for COBOL
v
oy si
pr luc
Notas:
Ex
El lenguaje COBOL que se verá a lo largo de este curso está al nivel de ISO 1989 (In-
ternational Standards Organization) con algunas mejoras. El COBOL estandar puede ejecu-
tarse en distintos ordenadores y sistemas operativos.
En el curso también se verán algunas extensiones proporcionadas por IBM y que am-
plian la riqueza del lenguaje.
___________________________________________________________________
6 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Enunciado de un problema
.I. n
Una compañia tiene un archivo de personal que contiene todos
.T ció
los números de sus empleados y su fecha de ingreso, en orden
YYYYMMDD
.
C
.F a
El cliente quiere obtener un listado con todos los números de
empleados, en las que la fecha de ingreso se imprima en
C rm
formato DD-MM-YYYY
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 7
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
ORGANIGRAMA
Diagrama de la solución
.I. n
.T ció
INICIO
Mover
.
¿Fin No campos
C
.F a
Abrir del Escribir
archivo? informe
Archivos
C rm Leer Cerrar
Si
Leer
archivo
to fo
Archivo Archivos
Final
ec o v
oy si
pr lu
Notas:
c
___________________________________________________________________
8 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PSEUDOCÓDIGO
Pseudocódigo de la solución
.I. n
Abrir archivo personal (entrada)
.T ció
archivo informe (salida)
.
Leer archivo personal,
C
si acaba poner indicador fin-archivo
.F a
C rm Hacer hasta fin-archivo
Mover campos-entrada a campos-salida
Imprimir registro con campos-salida
Leer archivo personal,
to fo
si acaba poner indicador fin-archivo
Fin-hacer
ec o
Notas:
c
Cuando los programas sufren muchas modificaciones, estas son más fáciles de reali-
zar si su desarrollo se ha realizado con técnicas que lleven a este tipo de construcción.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 9
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
IDENTIFICATION DIVISION.
PROGRAM-ID. PERSRPT.
AUTHOR. BEA SANJUAN.
.
C
INSTALLATION. IBM E&T.
.F a
DATE-WRITTEN. 08/31/2001.
DATE-COMPILED.
C rm
SECURITY. NONE.
*********************************************
* Utilizando el archivo de personal, imprimir
to fo
* un listado del personal con el numero de
* empleado y su fecha de ingreso, en formato
* DD-MM-YYYY
ec o
*********************************************
v
oy si
pr lu
Notas:
c
En esta y en las siguientes cinco páginas se verá una posible solución en COBOL del
problema planteado.
Ex
___________________________________________________________________
10 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
SOURCE-COMPUTER. IBM-390.
OBJECT-COMPUTER. IBM-390.
.T ció
INPUT-OUTPUT SECTION.
FILE-CONTROL.
.
SELECT PERSNNL ASSIGN TO PERSNNL.
C
SELECT LISTING ASSIGN TO LISTING.
.F a
DATA DIVISION.
FILE SECTION.
C rmFD PERSNNL
RECORDING MODE F
BLOCK CONTAINS 0 RECORDS.
01 PERSNNL-RECORD PIC X(80).
to fo
FD LISTING
BLOCK CONTAINS 1 RECORD.
01 LIST-LINE PIC X(80).
ec o v
oy si
Notas:
pr lu
En la DATA DIVISION se indican con más detalle los archivos a utilizar y sus prin-
Ex
cipales características.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 11
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
WORKING-STORAGE SECTION.
.I. n
01 PERSNNL-LAYOUT.
05 IN-EMPLOYEE-NO PIC 9(5).
.T ció
05 IN-HIRE-DATE.
10 IN-HIRE-YR PIC 9(4) VALUE ZERO.
.
10 IN-HIRE-MO PIC 99 VALUE ZERO.
C
10 IN-HIRE-DA PIC 99 VALUE ZERO.
.F a
05 FILLER PIC X(67).
C rm01 EOF-FLAG
88 FIN-ARCHIVO
88 NO-FIN-ARCHIVO
PIC X VALUE SPACE.
VALUE 'Y'.
VALUE ' '.
to fo
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
12 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
01 DETAIL-1.
.T ció
05 OUT-EMPL-NUM PIC 9(5) VALUE ZERO.
05 FILLER PIC X(5) VALUE SPACES.
.
05 OUT-HIRE-DATE.
C
10 OUT-HIRE-DD PIC 99 VALUE ZERO.
.F a
10 PIC X VALUE '-'.
10 OUT-HIRE-MM PIC 99 VALUE ZERO.
C rm 10
10 OUT-HIRE-YYYY
05 FILLER
PIC
PIC
PIC
X
9(4)
X(56)
VALUE
VALUE
VALUE
'-'.
ZERO.
SPACES.
to fo
ec o v
oy si
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 13
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION.
.I. n
OPEN INPUT PERSNNL OUTPUT LISTING
READ PERSNNL INTO PERSNNL-LAYOUT
.T ció
AT END SET FIN-ARCHIVO TO TRUE
.
PERFORM UNTIL FIN-ARCHIVO
C
PERFORM DETAIL-LINE
.F a
PERFORM READMAST
END-PERFORM
GOBACK.
to fo
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
14 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
* Mover los campos de entrada a campos del informe *
DETAIL-LINE.
.T ció
MOVE IN-EMPLOYEE-NO TO OUT-EMPL-NUM
MOVE IN-HIRE-YY TO OUT-HIRE-YYYY
MOVE IN-HIRE-MO TO OUT-HIRE-MM
.
MOVE IN-HIRE-DA TO OUT-HIRE-DD
C
WRITE LIST-LINE FROM DETAIL-1
.F a
AFTER ADVANCING 2 LINES.
C rm READMAST.
READ PERSNNL INTO PERSNNL-LAYOUT
AT END SET FIN-ARCHIVO TO TRUE.
to fo
ec o v
oy si
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 15
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Organización del programa COBOL
.T ció
.
IDENTIFICATION DIVISION
C
.F a
C rm ENVIRONMENT DIVISION
to fo
DATA DIVISION
PROCEDURE DIVISION
ec o v
oy si
pr lu
Notas:
c
y IDENTIFICATION DIVISION
Su principal objetivo es el de dar el nombre del programa
y ENVIRONMENT DIVISION
Permite indicar al ordenador los archivos que se utilizarán
y DATA DIVISION
Permite describir los datos que usará el programa y preparar zonas de memoria en
el ordenador para almacenarlas. Aquí se debe distinguir entre la zona de manejo
de los datos de los archivos y la zona de trabajo llamada la WORKING
y PROCEDURE DIVISION
Es la zona del programa donde reside la lógica con la que se manipularan los da-
tos almacenados en la DATA
___________________________________________________________________
16 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Información básica
.I. n
.T ció
.
C
.F a
C rm COBOL
to fo
Language
Reference
ec o v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 17
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Estructura del lenguaje COBOL
.T ció
Caracteres
Series de caracteres
.
C
Palabras COBOL
.F a
Palabras definidas por el usuario (variables)
C rm Palabras reservadas
Constantes figurativas
to fo
Registros especiales
Extensiones IBM
Literales numéricos y no numéricos
ec o v
oy si
pr lu
Notas:
c
___________________________________________________________________
18 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
Columnas Uso
.
C
01-06 área numeración secuencia
.F a
07 área indicativa
C rm 08-11
12-72
área A
área B
to fo
73-80 Denominación programa
ec o v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 19
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Continuación de sentencias
EJEMPLO
.I. n
COL. 7
.T ció
......|..1........2.........3. // ..6.........7..
77 ANY-DATA-ITEM USAGE DISPLAY
.
PIC X(20).
77 ITEM-CONTINUED PIC X(26) VALUE "ABCDE
C
.F a
- "FGHIJKLMOPQRSTUVWYZ".
77 ITEM-WITH-BLANKS PIC X(40) VALUE "01 02
- "03 04 05 06 07 08 09 10 "
C rm
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
20 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
Programa fuente
.
C
.F a
Compilador COBOL
Montador
to fo
Módulo de carga
ec o v
oy si
pr lu
Notas:
c
Una vez se ha escrito el programa, este debe seguir una serie de pasos antes de poder
ejecutarse en el ordenador.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 21
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
22 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
C
Conocer las divisiones de un programa COBOL
.F a
Ser capaz de codificar la IDENTIFICATION DIVISION
C rm
Conocer como se usa la ENVIRONMENT DIVISION
Entender el uso de la sección W ORKING-STORAGE de la
DATA DIVISION
to fo
ec o v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 23
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
IDENTIFICATION DIVISION
Organización de un programa
.I. n
.T ció
IDENTIFICATION DIVISION
.
C
.F a
ENVIRONMENT DIVISION
C rm DATA DIVISION
to fo
PROCEDURE DIVISION
ec o v
oy si
Notas:
___________________________________________________________________
24 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
IDENTIFICATION DIVISION
.I. n
PROGRAM-ID
.T ció
Parrafos opcionales
AUTHOR
.
INSTALLATION
C
DATE-W RITTEN
.F a
DATE-COMPILED
SECURITY
C rm
to fo
ec o
Notas:
v
La IDENTIFICATION DIVISION sirve para dar el nombre del programa y puede in-
oy si
El primer párrafo de esta división debe ser el PROGRAM-ID que es el que sirve para
c
dar el nombre del programa. Los otros párrafos son opcionales y pueden ponerse en cualquier
Ex
orden.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 25
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
(1)
IDENTIFICATION DIVISION. PROGRAM-ID. nombre programa
.T ció
ID
(1)
.
.
IS RECURSIVE
COMMON PROGRAM
C
INITIAL
.F a
INITIAL
COMMON
C rm AUTHOR.
(1)
comentario
to fo
Continua en la siguiente visual
ec o
Notas:
v
Sirve para dar el nombre con el que se conocerá el programa y permite darle unos
atributos. Es obligatorio y debe ser el primero de la ID DIVISION.
pr lu
El nombre del programa debe seguir unas reglas de acuerdo con la opción de com-
pilación PGMNAME (ver el Programmer’s Guide).
c
y AUTHOR
Nombre del que escribe el programa. Es un párrafo opcional.
___________________________________________________________________
26 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
(1)
INSTALLATION.
.T ció
comentario
(1)
.
DATE-WRITTEN.
C
comentario
.F a
(1)
DATE-COMPILED.
C rm SECURITY.
(1)
comentario
to fo
comentario
ec o
Notas:
v
y INSTALLATION
Nombre de la compañía o localidad
pr lu
y DATE-WRITTEN
Fecha en que el programa se codificó
y
c
DATE-COMPILED
Fecha en que se compiló. Cualquier comentario que se incluya en esta línea apa-
Ex
Las líneas de estos párrafos deben iniciarse en el área B y sirven sólo como
documentación.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 27
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
IDENTIFICATION DIVISION.
.I. n
PROGRAM-ID. PERSRPT.
AUTHOR. BEA SANJUAN.
.T ció
INSTALLATION. IBM E&T.
DATE-WRITTEN. 07/31/2001.
DATE-COMPILED.
.
SECURITY. NONE.
C
.F a
*********************************************
* Using the personnel file, print a personnel
C rm
* report with the employee number and each
* employee's hire-date, displayed as
* MM/DD/YYYY on the report
*********************************************
to fo
ec o
Notas:
v
___________________________________________________________________
28 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
ENVIRONMENT DIVISION
Organización de un programa
.I. n
.T ció
IDENTIFICATION DIVISION
.
C
ENVIRONMENT DIVISION
.F a
C rm CONFIGURATION
SECTION
INPUT-OUTPUT
SECTION
to fo
DATA DIVISION
PROCEDURE DIVISION
ec o v
oy si
Notas:
pr lu
CONFIGURATION SECTION
INPUT-OUTPUT SECTION
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 29
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
ENVIRONMENT DIVISION
CONFIGURATION SECTION
.I. n
SOURCE-COMPUTER
W ITH DEBUGGING MODE
.T ció
OBJECT-COMPUTER
Nombre ordenador
SPECIAL-NAMES
.
Nombres entorno
C
.F a
Alfabeto
Caracteres simbólicos
Signo monetario
C rm INPUT-OUTPUT SECTION
FILE-CONTROL
I-O CONTROL
to fo
ec o
Notas:
v
y CONFIGURATION SECTION
oy si
Es una sección opcional que permite describir el entorno del ordenador en el que
el programa se compilará y ejecutará. Sólo puede codificarse en el programa más
pr lu
y INPUT-OUPUT SECTION
c
y I-O-CONTROL
El contenido de esta sección depende del tipo de organización y del método de ac-
ceso de los archivos que utiliza el programa. Se verá con más detalle a lo largo del
curso.
___________________________________________________________________
30 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato
.T ció
CONFIGURATION SECTION.
párrafo SOURCE-COMPUTER
.
C
párrafo OBJECT-COMPUTER párrafo SPECIAL-NAMES
.F a
C rm
to fo
ec o
Notas:
v
y Relacionar nombres de entorno definidos por IBM con nombres nemotécnicos del
usuario
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 31
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
ENVIRONMENT DIVISION.
.I. n
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-390.
.T ció
OBJECT-COMPUTER. IBM-390.
SPECIAL-NAMES. CLASS VALID-STUFF IS
.
'A' thru 'Z', '1' thru '9'.
C
INPUT-OUTPUT SECTION.
.F a
FILE-CONTROL.
SELECT PERSNNL ASSIGN TO PERSNNL.
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
32 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATA DIVISION
Organización de un programa
.I. n
.T ció
IDENTIFICATION DIVISION
.
ENVIRONMENT DIVISION
C
.F a
C rm DATA DIVISION
PROCEDURE DIVISION
ec o v
Notas:
oy si
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 33
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATA DIVISION
FILE SECTION
.I. n
Entradas de descipción de archivos (FD o SD)
.T ció
Entradas de descripción de registros
WORKING-STORAGE SECTION
.
C
Entradas de descripción de registros
.F a
Entradas de descripción de variables
C rmLINKAGE SECTION
Notas:
v
y FILE SECTION
pr lu
Sirve para definir la estructura de los archivos. Las variables definidas en esta sec-
ción no están disponibles para el programa hasta que se abra el archivo y se rea-
lice alguna operación de lectura
c
y WORKING-STORAGE SECTION
Ex
y LINKAGE SECTION
Es donde se definen las variables que quedan a disposición del programa desde
otros programas
Todas estas secciones son opcionales pero, de existir, deben colocarse en el orden in-
dicado. Se va a estudiar la WORKING-STORAGE y las otras secciones se verán más
adelante.
___________________________________________________________________
34 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATA DIVISION.
.I. n
FILE SECTION.
FD PERSNNL
.T ció
RECORDING MODE F
BLOCK CONTAINS 0 RECORDS.
01 PERSNNL-RECORD PIC X(80).
.
C
FD LISTING
.F a
BLOCK CONTAINS 1 RECORD.
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 35
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
05 IN-EMPLOYEE-NO PIC 9(5).
05 IN-HIRE-DATE.
10 IN-HIRE-YR PIC 9(4) VALUE ZEROES.
.T ció
10 IN-HIRE-MO PIC 99 VALUE ZEROES.
10 IN-HIRE-DA PIC 99 VALUE ZEROES.
05 FILLER PIC X(67).
01 EOF-FLAG PIC X VALUE SPACE.
.
88 END-OF-FILE VALUE 'Y'.
C
88 NOT-END-OF-FILE VALUE ' '.
.F a
* linea de detalle para el informe de personal
01 DETAIL-1.
05 OUT-EMPL-NUM PIC 9(5) VALUE ZEROES.
C rm 05 FILLER
05 OUT-HIRE-DATE.
10 OUT-HIRE-DD
10
10 OUT-HIRE-MM
10
PIC X(5)
PIC
PIC
PIC
PIC
99
X
99
X
VALUE SPACES.
VALUE
VALUE
VALUE
VALUE
ZEROES.
'-'.
ZEROES.
'-'.
to fo
10 OUT-HIRE-YYYY PIC 9(4) VALUE ZEROES.
05 FILLER PIC X(56) VALUE SPACES.
ec o
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
36 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Descripción de variables
Descripción de variables
.I. n
Todas las descripciones de variables deben finalizar con un punto
.T ció
Formato 1
.
número de nivel
nombre-1 cláusula redefines
C
.F a
FILLER
Notas:
Este formato se utiliza para describir las variables en todas las secciones de la DATA
pr lu
DIVISION.
Las distintas cláusulas pueden escribirse en cualquier orden, teniendo en cuenta que:
c
nivel
y Si se especifica la cláusula REDEFINES debe estar justo a continuación del nom-
bre de la variable (o FILLER) si es que se indica. Si no se ponen entonces la cláu-
sula REDEFINES debe ir justo a continuación del número de nivel
El número de nivel puede ser cualquiere entre 01 y 49 o el 77. Las distintas cláusulas
deben ir separadas por un espacio, una coma o un punto y coma.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 37
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Números de nivel
.I. n
.T ció
PERSONAL-RECORD
EMPLOYEE-NAME EMPLOYMENT
POSITION
.
FIRST-NAME LAST-NAME SERIAL-NR NO USADO DIVISION DEPT
C
.F a
01 PERSONAL-RECORD.
02 EMPLOYEE-NAME.
C rm 04 FIRST-NAME
04 LAST-NAME
02 EMPLOYMENT.
04 SERIAL-NR
04 POSITION.
PICTURE X(10).
PICTURE X(10).
PICTURE 9(6).
to fo
06 FILLER PICTURE X(4).
06 DIVISION PICTURE X(4).
06 DEPT PICTURE 9(4).
ec o
Notas:
v
identifica distintos cometidos de las variables. Un número de nivel es el inicio de una varia-
ble, un nombre de condición o de una redefinición. Debe tener un valor entre 01 y 49, además
pr lu
Los números de nivel 02 a 49 pueden empezar en las áreas A o B, así como los 66 y
88. Los niveles del 01 a 09 pueden indicarse con un sólo dígito (1 a 9)
Las sucesivas entradas pueden empezar en la misma columna que la anterior o pueden
estar endentadas para una mayor claridad. Esta endentación no afecta a los números de nivel.
___________________________________________________________________
38 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Indicador de nivel
.I. n
Un conjunto de campos elementales es una agrupación
.T ció
Un nivel 01 puede ser un campo elemental o una agrupación
Los números de nivel indican la jerarquía de los campos
Un número de nivel tiene uno o dos dígitos.
.
C
Niveles válidos son: 01-49, 66, 77 y 88
.F a
Un número de nivel mayor indica un campo subordinado
C rm
Los números de nivel no tienen que ser consecutivos
to fo
ec o
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 39
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
El nivel 66 contiene una cláusula RENAMES. Sirve para reagrupar
.T ció
campos previamente definidos
El nivel 77 define un campo elemental
.
El nivel 88 proporciona nombres de condición, asociados a la
C
cláusula VALUE
.F a
Formato 2
C rm 66 nombre-1
nombre-1 Cláusula Renames
to fo
Formato 3
Notas:
y El nivel 77 son datos elementales sin subdivisiones. Deben ser únicos ya que no
c
pueden calificarse
Ex
___________________________________________________________________
40 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
01 EMPLOYEE-RECORD.
05 EMPLOYEE-TYPE PIC X.
.I. n
88 EXEMPT VALUE 'E'.
88 NON-EXEMPT VALUE 'N'.
.T ció
05 EMPLOYEE-NAME PIC X(30).
05 EMPLOYEE-ADDRESS.
10 EMPLOYEE-STREET PIC X(15).
.
10 EMPLOYEE-CITY PIC X(15).
10 EMPLOYEE-STATE PIC X(2).
C
.F a
10 EMPLOYEE-ZIP PIC 9(5).
66 GEOGRAPHIC
RENAMES EMPLOYEE-CITY THRU EMPLOYEE-ZIP.
C rm ...
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 41
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
Sirven para identificar las variables a utilizar
Debe ser la primera palabra después del número de nivel
.
Su contenido puede cambiar a lo largo de la ejecución del
C
programa
.F a
No pueden ser iguales que un nombre de sección o de
párrafo
C rm
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
42 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
término IN.
.T ció
01 EMPLOYEE-RECORD.
.
05 EMPLOYEE-SERIAL PIC X(6).
C
05 EMPLOYEE-NAME PIC X(30).
.F a
...
01 WEEKLY-PR-RECORD.
05 WEEK-ENDING-DATE PIC 9(8).
C rm 05 EMPLOYEE-SERIAL
...
PROCEDURE DIVISION
PIC X(6).
Notas:
v
añadiendo uno o más niveles de su jerarquía. Estos niveles añadidos reciben el nombre de ca-
lificadores. La calificación se realiza añadiendo la palabra IN (u OF).
pr lu
En cualquier jerarquía el nombre asociado al nivel superior debe ser único y no puede
calificarse.
c
Pueden indicarse todos los niveles de calificación que se desee para convertir el nom-
Ex
bre en único, aunque normalmente no es preciso indicar todos los niveles de la jerarquía.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 43
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FILLER
.I. n
DIVISION.
.T ció
Si se omite el nombre de la variable o la cláusula FILLER el
campo descrito se trata como si fuera un FILLER
.
C
.F a
01 EMPLOYEE-RECORD.
05 EMPLOYEE-TYPE PIC X.
C rm 05 EMPLOYEE-SERIAL
05 EMPLOYEE-NAME
05
05 EMPLOYEE-ADDRESS
05 FILLER
PIC
PIC
PIC
PIC
PIC
X(6).
X(30).
X(2).
X(60).
X(34).
to fo
ec o
Notas:
v
La palabra FILLER sirve para dar nombre a una variable que no puede ser referen-
oy si
ciado en el programa. Es opcional y, de indicarse, debe ir justo después del número de nivel.
pr lu
___________________________________________________________________
44 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
CLÁUSULA PICTURE
Cláusula PICTURE
.I. n
La cláusula PICTURE sirve para dar características generales y
.T ció
formas de edición de las variables
PIC y PICTURE son equivalentes
.
La longitud máxima de lo descrito en PIC es de 30 caracteres
C
Los valores entre paréntesis en las series sirven para indicar
.F a
repetición. Lo siguientes ejemplos son equivalentes:
C rm Formato
PICTURE
PIC
IS $99999.99CR.
IS $9(5).9(2)CR.
to fo
PICTURE serie caracteres
PIC IS
ec o v
oy si
Notas:
Sirve para especificar las características generales y los requisitos de edición de una
pr lu
variable elemental.
Esta cláusula debe especificarse en cada variable elemental excepto para una variable
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 45
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
B espacio
E indica el inicio del exponente en un campo
.T ció
de coma flotante
X puede albergar cualquier carácter
.
Z carácter numérico o un espacio
C
.F a
9 permite almacenar un número
0 permite almacenar el número 0
C rm /
.
,
para almacenar el carácter slash
para almacenar un punto
almacena una coma
to fo
ec o
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
46 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
* protección de números - "protección de cheque"
$ simbolo de moneda
.T ció
Simbolos admitidos pero que no ocupan una posición en los
datos:
.
C
.F a
P posición decimal asumida
S indica la presencia de signo
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 47
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
CLÁUSULA USAGE
Cláusula USAGE
.I. n
Formato
.T ció
BINARY
USAGE
IS COMP
COMPUTATIONAL
.
COMP-1
C
COMPUTATIONAL-1
.F a
COMP-2
COMPUTATIONAL-2
COMP-3
C rm COMPUTATIONAL-3
PACKED-DECIMAL
COMP-4
COMPUTATIONAL-4
DISPLAY
to fo
DISPLAY-1
INDEX
POINTER
PROCEDURE POINTER
ec o v
oy si
Notas:
ordenador.
Puede darse en todos los número de nivel que no sean el 66 o el 88. Si se especifica a
c
nivel de un elemento de agrupación, todos las variables elementales que están contenidas tie-
Ex
Las variables definidas con formato fecha sólo admiten DISPLAY o COMP-3.
___________________________________________________________________
48 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
9999 DISPLAY +1234 F1 F2 F3 F4
9999 DISPLAY -1234 F1 F2 F3 F4
S9999 DISPLAY +1234 F1 F2 F3 C4
.T ció
S9999 DISPLAY -1234 F1 F2 F3 D4
S9999 DISPLAY SIGN LEADING SEPARATE +1234 4E F1 F2 F3 F4
S9999 DISPLAY SIGN LEADING SEPARATE -1234 60 F1 F2 F3 F4
.
9999 BINARY +1234 04 D2
C
9999 BINARY -1234 04 D2
.F a
999999 BINARY +1234 00 00 04 D2
999999 BINARY -1234 00 00 04 D2
C rmS9999 BINARY
S999999 BINARY
9999
99999
999999
COMP-3
COMP-3
COMP-3
-1234
-1234
-1234
+12345
+12345
FB 2E
FF FF FB 2E
01
12
01
23
34
23
4F
5F
45 6F
to fo
6
S9999 COMP-3 -1234 01 23 4D
S99999 COMP-3 +12345 12 34 5C
* EBCDIC
ec o
Notas:
v
y DISPLAY
oy si
y PACKED-DECIMAL o COMPUTATIONAL-3
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 49
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
CLÁUSULA VALUE
Cláusula VALUE
.I. n
Formato 1 - literales
.T ció
VALUE literal
IS
.
Formato 2 - nombres de condición
C
.F a
88 nombre de condición-1 VALUE
IS
C rm literal-1
THROUGH
THRU
VALUES
literal-2
ARE
.
to fo
Formato 3 - nulos
VALUE NULL
IS NULLS
ec o v
oy si
Notas:
Con esta cláusula se puede indicar el valor inicial de una variable o los valores posi-
pr lu
En la WORKING se puede utilizar para dar valores iniciales a los nombres de condi-
ción y a las variables. Si no se utiliza, el valor inicial de las variables es impredecible.
y Formato 1:
Da valor inicial a una variable. La inicialización es independiente de las cláusulas
BLANK WHEN ZERO o JUSTIFIED que se hayan indicado.
Si se utiliza en la descripción de una variable que contiene o está subordinada a un
OCCURS, todos los elementos tendrán el valor indicado. Si se trata de una defini-
ción con DEPENDING ON se inicializan el número máximo de ocurrencias.
___________________________________________________________________
50 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
No puede ponerse en variables que estén contenidas o contengan entradas del tipo
EXTERNAL o REDEFINES.
Si se especifica a nivel de estructura el literal debe ser no numérico. Los elemen-
tos se inicializan sin tener en cuenta las variables elementales. En este caso no
pueden darse valores a ninguna entrada.
A nivel de estructura no puede darse esta cláusula si alguno de los elementos con-
.I. n
tiene alguna de las siguientes: JUSTIFIED, SYNCHRONIZED o un USAGE dis-
tinto del DISPLAY.
.T ció
y Formato 2:
Permite asociar un valor, valores y/o un rango de valores a un nombre de condi-
.
ción. Cada nivel 88 debe tener su propio nombre de condición.
C
.F a
y Formato 3:
Asigna una dirección no válida a las variables definidas con los USAGE del tipo
C rmPOINTER
to fo
ec o v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 51
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
WORKING-STORAGE SECTION.
.I. n
...
02 GRADE-LEVEL PIC 99.
88 ELEMENTARY VALUES 1 THRU 8.
.T ció
88 SECONDARY VALUES 9 THROUGH 12.
02 COST.
03 DOLLARS PIC X(3).
03 FILLER PIC X VALUE '.'.
.
03 PENNIES PIC X(2).
C
02 FC-CODE-GOOD PIC S9(8) BINARY VALUE LOW-VALUES.
.F a
...
05 PRICE PIC 999V99 VALUE IS 123.45.
05 PRICE-BREAK PIC 999V99 USAGE IS BINARY VALUE ZERO.
C rm
...
01 PRINT-LINE
01 HEADING-1
01 ADDR-PTR
...
PIC X(132) VALUE SPACES.
PIC X(132) VALUE ALL '_"'.
USAGE IS POINTER VALUE NULLS.
to fo
77 CHICAGO-AIRPORT PIC X(15) VALUE 'O''HARE'.
77 RESPONSE PIC X(20) VALUE 'HA DICHO "SI".'.
ec o
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
52 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Constantes figurativas
.I. n
SPACE, SPACES
.T ció
HIGH-VALUE, HIGH-VALUES (En EBCDIC es el valor X'FF')
LOW -VALUE, LOW -VALUES (En EBCDIC es el valor X'00')
.
QUOTE, QUOTES
C
.F a
ALL
NULL, NULLS
C rm
to fo
ec o
Notas:
v
Se trata de palabras reservadas que nombran y hacer referencia a unos valores especí-
oy si
Representa el valor numérico cero (0) o una sucesión ocurrencias de este carácter.
y SPACE / SPACES
c
Permite colocar una o más ocurrencias del carácter más alto en la secuencia de or-
den utilizada. En EBCDIC es el carácter hexadecimal FF.
y LOW-VALUE / LOW-VALUES
Permite colocar una o más ocurrencias del carácter más bajo en la secuencia de
orden utilizada. En EBCDIC es el carácter hexadecimal 00
y QUOTE / QUOTES
Representa una o más ocurrencias del carácter “ que depende de la opción de
compilación QUOTE o APOST.
y ALL
Permite repetir la serie de caracteres indicada
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 53
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Clases de Datos
.I. n
Los campos elementales son de la clase indicada en su definición
.T ció
(cláusula PICTURE):
ALFABETICOS
A
.
NUMERICOS
9 P S V (Máximo: 18 digitos)
C
.F a
NUMERICOS en formato edición
B P V Z 9 0 / , . + - CR DB * $ (USAGE DISPLAY)
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
54 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplos de Edición
.I. n
0 99999.99 00000.00
1234 99999.99 01234.00
.T ció
.3456 99999.99 00000.34
12345 99999.99 12345.00
12345- 99999.99 12345.00
.
12345 99,999.99 12,345.00
C
123^45 99999.99 00123.45
.F a
Edición con supresión de ceros COBOL
Valor Resultado
C rm 0
0
1234
12345
PICTURE
ZZZZZ.99
ZZZZZ.ZZ
ZZZZZ.99
ZZZZZ.99
.00
1234.00
12345.00
to fo
123- -ZZZZZ.99 - 123.00
12345 ZZ,ZZZ.99 12,345.00
123.456 ZZZZZ.99 123.45
ec o
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 55
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
0 $9999.99 $0000.00
1234 $9999.99 $1234.00
1234- $9999.99BCR $1234.00 CR
.T ció
12345 $99,999.99 $12,345.00
123 ^45 $99,999.99 $00,123.45
12345- $99,999.99 $12,345.00
.
123 ^45- $99,999.99- $00,123.45-
C
123 ^45- -$99,999.99 -$00,123.45
.F a
Edición con inserción Valor PICTURE Resultado
flotante 0 $$$$$.99 $.00
C rm 0
0
0
123
12345
$$$$$.ZZ
$$$$9.99
*****.**
$$$$$.99
$$$$$.99
$0.00
*****.**
$123.45
$2345.00
to fo
1234- $$$,$$$.99- $1,234.00-
12345 $$$,$$$.99- $12,345.00
123 ^45 $$,$$$.99 $123.4 5
123 ^45- $$,$$$.99- $123.00-
ec o
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
56 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
NOTACIÓN HEXADECIMAL
Notación HEXADECIMAL
.I. n
La notación hexadecimal puede utilizarse en literales no-numéricos
.T ció
Los caracteres permitidos son:
.
0-9, a-f, A-F
C
.F a
Se inician con el delimitador X" (o X' con opción APOST)
C rm
Se finalizan con el delimitador " ( o ' con opción APOST)
EJEMPLO:
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 57
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
REDEFINICIÓN
REDEFINES
.I. n
Formato
.T ció
número nivel REDEFINES nombre-2
nombre-1
FILLER
.
C
.F a
La redefinición permite que distintas descripciones de variables
utilicen la misma área de memoria.
Notas:
moria. Cuando se especifica, debe ser la primera cláusula después del nombre de la variable
(nombre-1) o FILLER. Si no se especifica nombre de variable debe ser lo primero después
del número de nivel.
c
Ex
Los números de nivel de nombre-1 y nombre-2 deben ser iguales y no pueden ser ni
66 ni 88.
___________________________________________________________________
58 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Por ejemplo:
05 A PICTURE X(6).
05 B REDEFINES A.
10 B-1 PICTURE X(2).
.I. n
10 B-2 PICTURE 9(4).
05 C PICTURE 99V99
.T ció
La redefinición incluye los elementos B-1 y B-2 y finaliza al llegar a C.
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 59
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION
.I. n
.T ció
IDENTIFICATION DIVISION
.
C
.F a
ENVIRONMENT DIVISION
C rm DATA DIVISION
to fo
PROCEDURE DIVISION
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
60 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
DECLARATIVES. | sect | . USE END DECLARATIVES.
| parraf|
.
C
.F a
(1)
| sect | .
| parraf|
C rm sect:
nombre párrafo.
sentencia
ec o
Notas:
v
ción de DECLARATIVES, y una serie de procesos que contienen secciones, parrafos, ins-
trucciones y expresiones.
pr lu
(1) Las secciones son opcionales. Si se omiten también pueden omitirse los párrafos
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 61
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
PROCEDURE DIVISION.
OPEN INPUT PERSNNL OUTPUT LISTING
READ PERSNNL INTO PERSNNL-LAYOUT
.T ció
AT END SET END-OF-FILE TO TRUE
.
PERFORM DETAIL-LINE
C
.F a
PERFORM READMAST
END-PERFORM
Notas:
v
oy si
pr luc
Ex
___________________________________________________________________
62 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
* de salida. Solo hay 30 empleados, pero *
* ¿que pasará si la compañia duplica o *
* triplica su tamaño? *
.T ció
DETAIL-LINE.
MOVE IN-EMPLOYEE-NO TO OUT-EMPL-NUM
.
MOVE IN-HIRE-YY TO OUT-HIRE-YYYY
C
.F a
MOVE IN-HIRE-MO TO OUT-HIRE-MM
MOVE IN-HIRE-DA TO OUT-HIRE-DD
READMAST.
AFTER ADVANCING 2 LINES.
Notas:
v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 63
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
64 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
Mostrar las posibilidades de la PROCEDURE:
C
.F a
PROCEDURE DIVISION y sentencia de
C rm asignación (MOVE)
Sentencias de cálculo
to fo
Sentencias de control de flujo
ec o
Sentencias de E/S
v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 69
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
.T ció
Conocer la PROCEDURE DIVISION
Definir la cabecera de la división
Definir secciones
.
Definir párrafos
C
.F a
Saber como finalizar un programa o los párrafos
Introducir los finalizadores de ámbito
C rm
Conocer la instrucción MOVE
Conocer la instrucción SET TO TRUE
to fo
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
70 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION
PROCEDURE DIVISION
.I. n
.T ció
IDENTIFICATION
DIVISION
.
ENVIRONMENT
C
DIVISION
.F a
C rm DATA DIVISION
PROCEDURE
DIVISION
to fo
CABECERA DECLARATIVAS SECCIONES PÁRRAFOS
ec o v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 71
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION
Formato (1 de 2)
.I. n
PROCEDURE DIVISION
| cabecera |
.T ció
DECLARATIVES. | sect | . USE END DECLARATIVES.
| parraf |
.
(1)
| sect | .
C
.F a
| parraf |
cabecera:
C rm USING
BY
BY
REFERENCE
VALUE
variable-1
to fo
.
RETURNING variable-2
ec o v
oy si
Notas:
pr lu
Con USING se ponen a disposición del subprograma variables definidas en el programa que
lo invoca. Sólo debe indicarse esta opción si el programa se invoca con la sentencia CALL.
Cada variable debe estar definido en la LINKAGE SECTION con un nivel 01 o 77.
___________________________________________________________________
72 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION
Formato (2 de 2)
.I. n
sect :
.T ció
nombre sección SECTION
prioridad
parraf:
.
C
nombre párrafo.
.F a
sentencia
C rm
to fo
ec o v
oy si
Notas:
pr lu
Una SECTION es un nombre definido por el usuario y que identifica de forma única
c
una parte de la PROCEDURE. Cada sección puede contener uno o más párrafos.
Ex
Un párrafo es un nombre seguido de un punto. El nombre del párrafo, dado que puede
calificarse con el de la sección en la que está incluido, no tiene por que ser único.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 73
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PÁRRAFOS
Párrafos
.I. n
Son las partes que configuran la PROCEDURE DIVISION
.T ció
El nombre de un párrafo debe empezar en el área A y debe
finalizar con un punto. Su nombre no tiene porque ser único
.
dentro del programa ya que puede calificarse con el nombre de
C
la sección a la que corresponda
.F a
C rm
El nombre del párrafo no tiene porque ser alfabético (puede ser
numérico)
Notas:
c
Ex
___________________________________________________________________
74 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
SENTENCIAS DE FINALIZACIÓN
Sentencias de finalización
.I. n
EXIT PROGRAM
esta sentencia indica el final de un subprograma llamado y
.T ció
devuelve control al programa que lo invocó
STOP RUN
.
la sentencia STOP RUN finaliza la ejecución del programa y
C
devuelve el control al sistema
.F a
GOBACK
esta sentencia funciona como la EXIT PROGRAM cuando está
sistema operativo
v
oy si
pr lu
Notas:
c
Si a las tres primeras sentencias de finalización les siguen otras en secuencia, éstas no
se ejecutarán nunca.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 75
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FINALIZADORES DE ÁMBITO
Finalizadores de ámbito
.I. n
Existen unos finalizadores explícitos para algunas sentencias de
.T ció
la PROCEDURE DIVISION. Todos ellos son palabras reservadas
del COBOL. Son:
.
END-ADD END-INVOKE END-SEARCH
C
.F a
END-CALL END-MULTIPLY END-START
END-COMPUTE END-PERFORM END-STRING
END-DELETE END-READ END-SUBSTRING
C rm END-DIVIDE
END-EVALUATE
END-IF
END-RETURN
END-REWRITE
END-UNSTRING
END-WRITE
to fo
Estos finalizadores se emparejan con la ocurrencia no emparejada
del verbo correspondiente
El finalizador implícito es el punto
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
76 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia de asignación
.I. n
La sentencia MOVE lleva los datos desde un área de memoria a
.T ció
otra (u otras) áreas
Formato 1
.
MOVE identificador-1 TO identificador-2
C
literal-1
.F a
C rm Formato 2
MOVE CORRESPONDING
CORR
identificador-1 TO identificador-2
to fo
Los identificadores pueden ser campos elementales o de grupo
Notas:
c
Esta sentencia sirve para transferir información de un área de memoria a otra u otras
áreas.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 77
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Movimientos elementales:
.I. n
Ambas partes son campos elementales
Puede producirse conversión de los datos, así como la edición
.T ció
o supresión de la edición
En casos de movimientos alfabéticos, se producen los
oportunos rellenos o truncamientos
.
C
.F a
Movimientos de estructuras:
C rm No se produce conversión
Notas:
pr luc
Ex
___________________________________________________________________
78 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplos de MOVE
WORKING-STORAGE SECTION.
01 GROUP-ITEM1.
.I. n
04 ELEM-ITEM1 PIC X(1).
04 ELEM-ITEM2 PIC X(2).
.T ció
04 ELEM-ITEM3 PIC X(3).
04 ELEM-ITEM4 PIC X(4).
PROCEDURE DIVISION.
MOVE SPACES TO GROUP-ITEM-1
.
b b b b b b b b b b
C
.F a
MOVE "XY" TO ELEM-ITEM-1 ELEM-ITEM-3
X b b X Y b b b b b
C rm
MOVE ALL "*" TO ELEM-ITEM-4
X b b X
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 79
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
OPCIÓN CORRESPONDING
Opción CORRESPONDING
.I. n
.T ció
01 STRUCT-1.
03 FIELD-A PIC 9(9) VALUE 123456789.
03 FIELD-B PIC X(5) VALUE "abcde".
.
03 FIELD-C PIC 9(4)V99 VALUE 1234.56.
C
03 FIELD-D PIC 9(4)V99 VALUE 123456789.
.F a
03 FILLER PIC X(20).
01 STRUCT-2.
C rm 10 FIELD-C
10 FILLER
10 FIELD-B
10 FILLER
10 FIELD-A
PIC Z(4).99.
PIC XXX.
PIC X(5).
PIC XXX.
PIC Z(9).
to fo
10 FILLER PIC XXX
...
MOVE CORRESPONDING STRUCT-1 TO STRUCT-2
Notas:
c
milar al siguiente:
___________________________________________________________________
80 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
...
01 FARE-PLAY PIC 9999.99.
.I. n
77 DE-EDITED-FARE PIC 9999V99 COMP-3.
77 EDITED-TOTAL PIC ZZ,ZZ9.99.
.T ció
...
MOVE 1234.56 TO DE-EDITED-FARE
MOVE 9876.54 TO FARE-PLAY
.
DISPLAY DE-EDITED-FARE
C
MOVE FARE-PLAY TO DE-EDITED-FARE
.F a
DISPLAY DE-EDITED-FARE
MOVE FARE-PLAY TO EDITED-TOTAL
C rm DISPLAY EDITED-TOTAL
...
- - - - - - - SALIDA - - - - - -
123456
to fo
987654
9,876.54
ec o v
oy si
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 81
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
ASIGNACIONES PARCIALES
Asignaciones parciales
.I. n
Formato
.T ció
MOVE nombre-datos1 (inicio: ) TO nombre-datos2
longitud
.
C
.F a
Las asignaciones parciales se realizan indicando la posición del
C rm
primer carácter a transferir y, opcionalmente, la longitud de lo que
se quiere asignar
Si se omite la longitud, se transfieren caracteres hasta llegar al
último de la variable (los : son obligatorios).
to fo
La variable debe ser de tipo DISPLAY. Puede estar calificada o
indexada. La descripción de la asignación se indica una vez la
variable está plenamente identificada
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
82 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
...
01 WHOLE-NAME PIC X(55).
.I. n
01 NAME-LENG PIC 9999 USAGE IS BINARY.
01 LAST-NAME PIC X(35).
.T ció
01 REC-LAYOUT.
05 FIELD-1 PIC(24).
05 FIELD-2 PIC(56).
.
...
C
MOVE WHOLE-NAME (1:25) TO LAST-NAME
.F a
...
MOVE 25 TO NAME-LENG
C rm
MOVE
MOVE
MOVE
MOVE
...
WHOLE-NAME (1:NAME-LENG) TO ...
FIELD-1(2:3) TO WHOLE-NAME(6:3)
SPACES TO FIELD-1 IN REC-LAYOUT (1:10)
SPACES TO FIELD-2 IN REC-LAYOUT (27:)
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 83
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Cuando se ejecuta esta sentencia, el valor asociado a un nombre de
.T ció
condición se asigna a la variable condicional asociada de acuerdo con las
reglas de la cláusula VALUE.
Formato -- SET (nombres de condición)
.
C
SET nombre-condición TO TRUE
.F a
C rm
Nom bre de condición : debe estar asociado a una variable condicional.
Si hay más de un valor en la cláusula VALUE del nom bre de condicón , la
variable condicional asociada toma el primer valor.
to fo
01 CUST-TYPE PIC 99.
88 INACTIVE VALUE 9.
88 SPEC-ACCTS VALUE 20, 11, 40, 44.
...
SET INACTIVE TO TRUE
SET SPEC-ACCTS TO TRUE
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
84 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia INITIALIZE
Sentencia INITIALIZE
.I. n
Formato
.T ció
INITIALIZE identificador-1
.
C
REPLACING ALPHABETIC BY identificador-2
.F a
ALPHANUMERIC DATA literal-1
NUMERIC
ALPHANUMERIC-EDITED
C rm NUMERIC- EDITED
DBCS
EGCS
Notas:
c
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
86 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
se inicializan con espacios
01 MISC-DATA.
.T ció
05 SUB PIC S9(04) COMP.
05 COUNTER PIC S9(09) COMP-3.
05 LABEL-NM PIC A(20).
.
05 FILLER PIC X(5).
C
05 PAGE-NO PIC ZZ9.
.F a
05 DESCRIPTION PIC X(40).
...
C rmPROCEDURE DIVISION.
INITIALIZE MISC-DATA
La siguiente sentencia asigna un 1 a SUB y COUNTER, dejando el
resto de variables inalteradas.
to fo
INITIALIZE MISC-DATA REPLACING NUMERIC DATA BY 1
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 87
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Conocer la sentencia ADD
.
Conocer los tipos de datos numéricos
C
.F a
Ver los errores básicos que pueden producirse en las
sentencias de cálculo
C rm
Ver resultados intermedios
Conocer las sentencias:
SUBTRACT
to fo
MULTIPLY
DIVIDE
La sentencia COMPUTE
ec o v
oy si
pr luc
Notas:
Ex
___________________________________________________________________
88 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia ADD
.I. n
Formato 1
.T ció
ADD identificador-1 TO identificador-2
literal-1 ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-ADD
Notas:
c
La sentencia ADD permite sumar dos o más operandos numéricos y almacenar el re-
sultado.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 89
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
...
add ventas tasas to total-ventas
.I. n
add ventas-dia to total-ped ventas-mes
add 1 to contador
.T ció
...
.
ANTES DESPUES
C
ventas 100.00 100.00
.F a
tasas 5.00 5.00
total-ventas 20.00 125.00
C rm ventas-dia
total-ped
ventas-mes
contador
150.00
225.00
1000.00
3
150.00
375.00
1150.00
4
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
90 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Ex
pr luc
oy si
ec o v
to fo
C rm
.F a
.T ció
.I. n
C
.
Material del Alumno
___________________________________________________________________________
.I. n
DATA DIVISION.
01 TABLE-OF VALUES.
05 ENTRY-A PIC 99V9 VALUE 12.2.
.T ció
05 ENTRY-B PIC 99V99 VALUE 12.22.
05 ENTRY-C PIC 99V999 VALUE 12.228.
05 ENTRY-D PIC 999 VALUE 100.
.
77 FINAL-AMT PIC ZZ,ZZZ.99.
C
...
.F a
PROCEDURE DIVISION.
...
Notas:
pr luc
Ex
___________________________________________________________________
92 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
___________________________________________________________________________
Material del Alumno
.I. n
ADD CORRESPONDING identificador-1 TO identificador-2
CORR
.T ció
ROUNDED SIZE ERROR sentencia-imperativa
.
NOT ON
C
.F a
C rm
END-ADD
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 93
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATA DIVISION.
.I. n
01 RESUMEN-MES.
05 INGRESOS PIC 9(8).
.T ció
05 DESCUENTOS PIC 9(8).
05 GASTOS PIC 9(8).
05 GANANCIAS PIC 9(8).
.
01 RESUMEN-TRIMESTRAL.
05 INGRESOS PIC 9(8).
C
.F a
05 DESCUENTOS PIC 9(8).
05 GASTOS PIC 9(8).
05 GANANCIAS PIC 9(8).
C rm
...
PROCEDURE DIVISION
ADD CORR RESUMEN-MES TO
to fo
RESUMEN-TRIMESTRAL.
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
94 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
error.
La condición SIZE ERROR se produce con el resultado final, no con
.T ció
los cálculos intermedios.
Si no se indica la opción ON SIZE ERROR, se produce un
.
truncamiento del resultado.
C
.F a
Si se especifica ON SIZE ERROR se ejecuta la sentencia imperativa
que se haya indicado y a continuación se devuelve el control al final
de la sentencia aritmética.
C rm
Tanto en el ADD CORRESPONDING como en el SUBTRACT
CORRESPONDING, no se activa el ON SIZE ERROR hasta el final
de todas las sumas o restas.
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 95
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Resultados intermedios
.I. n
Pueden producirse resultados intermedios en las sentencias
aritméticas en:
.T ció
sentencias ADD o SUBTRACT con múltiples operandos después
del verbo
sentencia COMPUTE con múltiples campos resultado
.
cuando hay varios receptores después de la opción GIVING en
C
.F a
las sentencias ADD, SUBTRACT, MULTIPLY o DIVIDE
C rm
El tamaño máximo de cada operando aritmético es de 18 dígitos
decimales
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
96 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
DATA DIVISION.
77 FLD1 PIC 9(7)V9(5).
.
77 FLD2 PIC 9(11)V99.
77 FLD3 PIC 9(12)V9(3).
C
.F a
...
PROCEDURE DIVISION.
...
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 97
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Decimal empaquetado (decimal interno)
.T ció
Decimal con zona (decimal externo)
.
C
El número de posiciones de dígito puede ir desde 1 hasta 18
.F a
Si no tiene signo el contenido sólo puede ser los números del 0 al 9. Si
C rm
es con signo también puede incluir el +, el - u otra representación del
signo
Notas:
pr lu
Una cláusula VALUE asociada a una variable numérica elemental debe indicar un li-
c
teral numérico o la constante ZERO. Una cláusula VALUE asociada a un grupo que contiene
variables numéricas puede indicar un literal no numérico o una constante figurativa dado que
Ex
___________________________________________________________________
98 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia SUBTRACT
.I. n
Formato 1
.T ció
SUBTRACT identificador-1 FROM
literal-1
.
identificador-2
C
ROUNDED
.F a
SIZE ERROR sentencia-imperativa
C rm NOT ON
END-SUBTRACT
to fo
Todos los identificadores previos al FROM se suman y el
resultado se resta y se guarda en identificador-2. El proceso se
repite, de izquierda a derecha, por cada identificador-2.
ec o v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 99
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Formato 2
.I. n
SUBTRACT identificador-1 FROM identificador-2
literal-1 literal-2
.T ció
GIVING identificador-3
ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-SUBTRACT
Notas:
pr luc
Ex
___________________________________________________________________
100 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
CORR
.T ció
identificador-2
ROUNDED
.
SIZE ERROR sentencia-imperativa
C
NOT ON
.F a
END-SUBTRACT
C rm
Las variables elementales definidas en identificador-1 se restan y
to fo
se almacenan en las variables indicadas en identificador-2.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 101
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
05 CAMPO-B PIC 99V99 VALUE 12.22.
05 CAMPO-C PIC 99V999 VALUE 12.228.
.T ció
05 CAMPO-D PIC 999 VALUE 100.
01 RESUMEN-MES.
05 INGRESOS PIC 9(8).
05 DESCUENTOS PIC 9(8).
.
05 GASTOS PIC 9(8).
C
01 RESUMEN-TRIMESTRE.
.F a
05 INGRESOS PIC 9(8).
05 DESCUENTOS PIC 9(8).
C rm
...
05 GASTOS
PROCEDURE DIVISION.
...
PIC 9(8).
Notas:
pr lu
El identificador debe ser una variable numérica excepto en el Formato 3 que debe in-
dicar el nombre de un grupo.
c
Ex
___________________________________________________________________
102 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia MULTIPLY
.I. n
Formato 1
.T ció
MULTIPLY identificador-1 BY identificador-2
literal-1 ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-MULTIPLY
Notas:
c
Esta sentencia permite multiplicar variable numéricas y dejar el resultado en una variable.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 103
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Ex
pr luc
oy si
ec o v
to fo
C rm
.F a
.T ció
.I. n
C
.
Material del Alumno
___________________________________________________________________________
DATA DIVISION.
.I. n
77 PORCEN-IVA PIC V9999 VALUE .06.
.T ció
77 IVA-A-PAGAR PIC 99999V99.
77 PRECIO-SIN-IVA PIC 99999V99.
...
.
PROCEDURE DIVISION.
C
...
.F a
MULTIPLY PRECIO-SIN-IVA BY .06
GIVING IVA-A-PAGAR ROUNDED.
C rm
...
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 105
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia DIVIDE
.I. n
Formato 1
.T ció
DIVIDE identificador-1 INTO identificador-2
literal-1 ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-DIVIDE
to fo
El valor de identificador-1 o de literal-1 se utiliza en la división
con el identificador-2 y el cociente se almacena en cada
identificador-2 en un proceso que se repite de izquierda a
derecha por cada identificador-2 reseñado
ec o v
oy si
pr lu
Notas:
c
Con esta sentencia se dividen uno o más variables numéricas entre otra u otras pu-
diendo obtener el cociente y el resto.
Ex
___________________________________________________________________
106 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Formato 2
.I. n
DIVIDE identificador-1 INTO identificador-2
literal-1 BY literal-2
.T ció
GIVING identificador-3
ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-DIVIDE
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 107
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Formato 3
.I. n
DIVIDE identificador-1 INTO identificador-2
literal-1 BY literal-2
.T ció
GIVING identificador-3 REMAINDER identificador-4
ROUNDED
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-DIVIDE
El valor del identificador-1 o del literal-1 se divide entre o por el valor del
identificador-2 o del literal-2. El resultado se almacena en identificador-3 y
to fo
el resto en identificador-4.
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
108 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia COMPUTE
Sentencia COMPUTE
.I. n
Formato
.T ció
COMPUTE identificador-1 = expresión
ROUNDED EQUAL
.
C
SIZE ERROR sentencia-imperativa
.F a
NOT ON
C rm END-COMPUTE
potencia **
v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 109
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
...
.I. n
COMPUTE FINAL-VAL ROUNDED = BASIC-VAL * 1.5
END-COMPUTE
.T ció
...
COMPUTE AREA = BASE * ALTURA END-COMPUTE
...
COMPUTE MEDIA = (ITEM-1 + ITEM-2 + ITEM-3) / 3.
.
...
C
COMPUTE PROBLEMA = ITEM-1 - ITEM-2 * ITEM3.
.F a
...
COMPUTE VAYA-VAYA = ((ITEM-1 + 56) * (ITEM-2 / 4))-
Notas:
pr luc
Ex
___________________________________________________________________
110 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos - Sentencias de control del flujo
.T ció
.
Sentencia PERFORM
C
.F a
Expresiones relacionales
C rm
Sentencia IF
Sentencia EVALUATE
v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 111
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia PERFORM
Sentencia PERFORM
.I. n
La sentencia PERFORM transfiere control al nombre de
.T ció
párrafo indicado y, al finalizar, continúa con la siguiente
sentencia.
.
La sentencia PERFORM puede ser:
C
.F a
fuera-de-línea cuando se indica un nombre
en-línea cuando no lleva un nombre asociado
Notas:
c
Ex
___________________________________________________________________
112 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
PERFORM
.T ció
nombre-proc-1
THROUGH nombre-proc-2
THRU
.
(1)
sentencia-imperativa-1 END-PERFORM
C
.F a
(1) es opcional
C rm
Las sentencias indicadas en el PERFORM se ejecutan y el control
pasa a la sentencia ejecutable que sigue a la PERFORM
THROUGH y THRU son equivalentes
to fo
ec o v
oy si
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 113
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
la ejecución de la última sentencia de este párrafo
y Si se indica nombre-proc-2 y se trata de una sección, el control se devuelve des-
.T ció
pués de la ejecución de la última sentencia del último párrafo de esta sección
.
que realicen sean consecutivas empezando por las de nombre-proc-1 y siguiendo con las de
C
nombre-proc-2.
.F a
Si existe más de un camino para llegar al punto de retorno, se puede poner un párrafo
C rm
nombre-proc-2 con una única sentencia: EXIT. Todos los caminos pueden ir a parar a este
único punto de retorno.
Cuando dentro de las sentencias que componen un PERFORM existe una sentencia
to fo
PERFORM, las sentencias que componen este PERFORM anidado deben estar totalmente in-
cluidas o ser totalmente externas al PERFORM inicial.
Si se llega a las sentencias que componen un párrafo de una forma distinta de la invo-
ec o
cación vía PERFORM, el control sigue a través de ellas sin tener en cuenta las posibles sen-
tencias EXIT existententes.
v
oy si
pr luc
Ex
___________________________________________________________________
114 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PERFORM en-línea
.I. n
fuera-de-línea
.T ció
PERFORM MOVEIT
VARYING X FROM 1 BY 1 UNTIL X = 5.
...
.
MOVEIT.
C
MOVE DATA-FLD (X) TO PRINT (X).
.F a
en-línea
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 115
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Formato 2
.I. n
PERFORM
.T ció
nombre-proc-1 identificador-1 TIMES
THROUGH nombre-proc-2 entero-1
THRU
.
(1)
sentencia-imperativa-1 END-PERFORM
C
identificador-2 TIMES
.F a
entero-2
(1) es opcional
C rm
Las sentencias incluidas en el PERFORM se ejecutan el número de
veces indicadas en identificador-1 o en entero-1
El identificador-1 debe ser un entero. Si su valor es cero o es
negativo no se ejecutan las sentencias incluidas
to fo
Cuando finaliza se devuelve el control a la sentencia siguiente
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
116 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Formato 3
.I. n
PERFORM nombre-proc-1 | frase 1 | | frase 2 |
(1)
| frase 2 | sentencia-imperativa-1 END-PERFORM
.T ció
(1) es opcional
frase 1:
nombre-proc-2
.
THROUGH
THRU
C
.F a
frase 2:
UNTIL condición-1
C rm WITH
TEST BEFORE
AFTER
Notas:
pr lu
Con este formato los párrafos indicados se ejecutan HASTA (UNTIL) que la condi-
ción indicada sea cierta. En este momento el control se pasa a la sentencia siguiente al
PERFORM.
c
Con la opción TEST BEFORE (valor por omisión) la condición se comprueba antes
de ejecutar las sentencias asociadas. Con TEST AFTER la condición se evalúa al final y, en
consecuencia, las sentencias asociadas se ejecutarán una vez por lo menos.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 117
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
nombre-proc-1 | frase 1 |
THROUGH nombre-proc-2 | frase 2 |
THRU
.T ció
(1)
| frase 1 | sentencia-imperativa-1 END-PERFORM
(1) es opcional
frase 1:
.
VARYING identif-2 FROM identif-3 BY
C
TEST BEFORE indice-1 indice-2
.F a
WITH AFTER literal-1
identif-4
literal-2
C rm
frase 2:
frase 3:
AFTER identif-5
indice-3
FROM identif-6
indice-4
literal-3
| frase 3 |
to fo
BY identif-7 UNTIL condición-2
literal-4
La opción VARYING incrementa o decrementa el valor de una o más
variables o indices.
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
118 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
El párrafo PARA1 se ejecutará 100 veces:
PERFORM PARA1 100 TIMES.
.T ció
Este bucle se ejecuta 101 veces:
PERFORM WITH TEST AFTER UNTIL X > 100
ADD A(X) TO TOTAL
.
ADD 1 TO X
C
END-PERFORM.
.F a
Este ejemplo se ejecutará 100 veces:
PERFORM VARYING X FROM 1 BY 1 UNTIL X > 100
y ahora 101:
PERFORM WITH TEST AFTER
to fo
VARYING X FROM 1 BY 1 UNTIL X > 100
ADD A(X) TO TOTAL
END-PERFORM.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 119
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Expresiones relacionales
Las comparaciones pueden indicarse:
.I. n
IS LESS THAN IS <
.T ció
IS NOT LESS THAN IS NOT <
GREATER THAN IS >
IS NOT GREATER THAN IS NOT >
.
IS EQUAL TO IS =
C
IS NOT EQUAL TO IS NOT =
.F a
IS GREATER THAN OR EQUAL TO IS >=
IS LESS THAN OR EQUAL TO IS <=
C rm
Las palabras IS, THAN y TO no son obligatorias
Los símbolos compuestos "<=" y ">=" no deben incluir espacios
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
120 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
PERFORM PARA1 THRU PARA2 WITH TEST AFTER
VARYING COUNTER FROM 2 BY 2
.T ció
UNTIL COUNTER NOT LESS THAN MAXUM...
.
C
WHEN BALANCE-DUE < 250.00 ...
.F a
IF CREDIT-LIM GREATER OR EQUAL MAX-AMT ...
C rm
IF SUBTOTAL >= VOLUME-DISCOUNT ...
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 121
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia IF
Sentencia IF
.I. n
Formato
.T ció
IF condición-1 sentencia-1
THEN NEXT SENTENCE
.
C
.F a
END-IF
ELSE sentencia-2
C rm NEXT SENTENCE
Notas:
c
Esta sentencia evalúa una condición y ejecuta unas u otras sentencias dependiendo del
resultado de dicha evaluación.
Ex
Condicion-1 puede ser simple o compuesta en alguno de los formatos que se han
visto anteriormente.
___________________________________________________________________
122 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia IF - Ejemplos
IF DATA1 IS NOT NUMERIC THEN ...
ELSE NEXT SENTENCE.
...
.I. n
READ PROD-MASTER KEY IS PART-NUMBER
INVALID KEY SET NOT-FOUND TO TRUE
NOT INVALID KEY SET FOUND TO TRUE
.T ció
END-READ
IF FOUND PERFORM OKAY ELSE PERFORM NOTFND END-IF
...
IF CUST-NUMB < PREV-CUST-NUMB
.
MOVE "FUERA DE SECUENCIA" TO MESSAGE-TXT
PERFORM WRITE-MESSAGE
C
ADD 1 TO REJECT-COUNTER
.F a
ELSE
MOVE CUST-NUMB TO PREV-CUST-NUMB.
C rm
PERFORM PROCESS-CUST
...
IF CUST-NUMB < PREV-CUST-NUMB
MOVE "FUERA DE SECUENCIA" TO MESSAGE-TXT
PERFORM WRITE-MESSAGE
ADD 1 TO REJECT-COUNTER
to fo
ELSE
MOVE CUST-NUMB TO PREV-CUST-NUMB
END-IF
PERFORM PROCESS-CUST
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 123
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia IF - Ejemplos
Las dos técnicas son equivalentes:
05 STUDENT-STATUS PIC X.
.I. n
88 FULLTIME VALUE "F".
88 PARTTIME VALUE "P".
88 NONDEGREE VALUE "N".
.T ció
88 AUDIT VALUE "A".
88 NONE-OF-ABV VALUE "O".
- - - - - - - - - - - - - - - - - - - - - - - -
IF NONDEGREE
.
PERFORM NON-CANDIDATE-PROCESS
- - - - - - - - - - - - - - - - - - - - - - - -
C
IF STUDENT-STATUS = "N"
.F a
PERFORM NON-CANDIDATE-PROCESS
Notas:
pr luc
Ex
___________________________________________________________________
124 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Condiciones múltiples
Las expresiones condicionales pueden estar formadas por la unión
de varias con los operadores lógicos AND y OR
.I. n
Pueden colocarse paréntesis para agrupar las condiciones
.T ció
IF ITEM-1 = DOMESTIC-ITEM-NO
AND ITEM-2 = OVERSEAS-ITEM-NO
OR
ITEM-1 = OVERSEAS-ITEM-NO
.
AND ITEM-2 = DOMESTIC-ITEM-NO
C
SET MIXED-SHIPMENT-FLAG TO TRUE
.F a
END-IF
...
SEARCH TABLPAIR VARYING NDX
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 125
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
AND ITEM-2(NDX) = "B"
SET TAB-FOUND TO TRUE
WHEN ITEM-1(NDX) = "B"
.T ció
AND ITEM-2(NDX) = "A"
SET TAB-FOUND TO TRUE
END-SEARCH
.
...
SEARCH LTR-PAIR VARYING NDX
C
WHEN (ITEM-1 IN TABLE-WEST(NDX) =
.F a
ITEM-1 IN TRANS-RECORD
AND ITEM-2 IN TABLE-EAST(NDX) =
C rm OR
ITEM-2
(ITEM-2
ITEM-1
AND ITEM-1
IN TRANS-RECORD)
IN TABLE-EAST(NDX) =
IN TRANS-RECORD
IN TABLE-WEST(NDX) =
to fo
ITEM-2 IN TRANS-RECORD)
SET SWITCH-FOUND TO TRUE
END-SEARCH
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
126 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 LAB4SOLN
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----
.T ció
000110 * CASE I (IF STATEMENT WITH PERIOD)
000111 READ ITEM-MASTER-FILE
000112 IF MASTER-RETURN NOT = '00'
000113 1 DISPLAY 'ERR-MESSAGE = MASTER FILE READ ERROR'
000114 1 PERFORM 9900-ABNORMAL-ERROR.
.
000115 INITIALIZE WS-TOTAL-AMT
PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 LAB4SOLN
C
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----
.F a
000210 * CASE II (IF STATEMENT WITHOUT PERIOD)
000211 READ ITEM-MASTER-FILE
000212 IF MASTER-RETURN NOT = '00'
C rm
000213
000214
000215
1
1
1
DISPLAY 'ERR-MESSAGE = MASTER FILE READ ERROR'
PERFORM 9900-ABNORMAL-ERROR
INITIALIZE WS-TOTAL-AMT
PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 LAB4SOLN
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----
000310
000311
* CASE III (IF STATEMENT WITH END-IF)
READ ITEM-MASTER-FILE
to fo
000312 IF MASTER-RETURN NOT = '00'
000313 1 DISPLAY 'ERR-MESSAGE = MASTER FILE READ ERROR'
000314 1 PERFORM 9900-ABNORMAL-ERROR
000315 END-IF
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 127
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Condiciones de clase
NUMERIC
.I. n
La variable sólo contiene los caracteres o al 9 (con o sin signo).
Debe ser USAGE DISPLAY o PACKED-DECIMAL
.T ció
ALPHABETIC
.
Contiene caracteres de la A-Z, a-z, o espacios
C
.F a
ALPHABETIC-UPPER
ALPHABETIC-LOW ER
to fo
Contiene caracteres a-z (sólo minúsculas) o espacios
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
128 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
en minúsculas, numérica, ...
.T ció
200-MAINLINE.
MOVE "abcdefgh" TO DISPLAY-AREA
.
DISPLAY DISPLAY-AREA
C
.F a
IF DISPLAY-AREA IS ALPHABETIC THEN
DISPLAY "ES ALFABETICA"
C rm ELSE
DISPLAY "NO ES ALFABETICA".
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 129
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia CONTINUE
La sentencia CONTINUE permite no hacer nada cuando se
espera una sentencia
.I. n
Ejemplo 1 - "NEXT SENTENCE" (line 120 ==> line 210)
0100 IF A = B
0110 IF C = D
0120 NEXT SENTENCE
.T ció
0130 ELSE
0140 MOVE MESSAGE-1 TO RPT-MESSAGE-1
0150 END-IF
0160 ADD C TO TOTAL
.
0170 IF E = F
0180 MOVE MESSAGE-4 TO RPT-MESSAGE-2
C
0190 END-IF
.F a
0200 END-IF.
0210 next instruction
Ejemplo 2 - "CONTINUE" (line 120 ==> line 160)
C rm
0100 IF A = B
0110 IF C = D
0120 CONTINUE
0130 ELSE
0140 MOVE MESSAGE-1 TO RPT-MESSAGE-1
0150 END-IF
0160 ADD C TO TOTAL
to fo
0170 IF E = F
0180 MOVE MESSAGE-4 TO RPT-MESSAGE-2
0190 END-IF
0200 END-IF
0210 next instruction
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
130 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia EVALUATE
EVALUATE
.I. n
Formato
EVALUATE identificador-1
.T ció
literal-1
expresión-1 ALSO identificador-2
TRUE literal-2
FALSE expresión-2
.
TRUE
C
FALSE
.F a
WHEN | frase | sentencia-1
C rm
frase:
WHEN OTHER
ANY
ALSO
sentencia-2
| frase |
END-EVALUATE
to fo
condición
TRUE
FALSE
identificador-3
NOT literal-3 THROUGH identificador-4
ec o
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 131
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia EVALUATE
Es la instrucción que implanta la estructura "case"
.I. n
EVALUATE dataname
WHEN value-1....
WHEN value-2 {THROUGH|THRU} value-3...
.T ció
WHEN NOT value-4
....
WHEN OTHER....
.
END-EVALUATE
C
Ejemplo básico de EVALUATE:
.F a
EVALUATE trans-id
C rm WHEN 'A'
WHEN 'D'
WHEN 'U'
WHEN OTHER
END-EVALUATE
Perform
Perform
Perform
Perform
add-trans
delete-trans
update-trans
bad-trans
to fo
El ámbito de la cláusula WHEN son todas las sentencias hasta el
siguiente WHEN, el END-EVALUATE o un punto
ec o v
oy si
Notas:
pr lu
Con esta sentencia se consigue una forma abreviada de realizar una serie de IFs anida-
dos. Se pueden evaluar múltiples condiciones.
c
Ex
___________________________________________________________________
132 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
EVALUATE {TRUE | FALSE}
WHEN expresión condicional-1....
.T ció
WHEN NOT expresión condicional-2....
....
WHEN OTHER....
END-EVALUATE
.
Ejemplo de "EVALUATE TRUE":
C
.F a
EVALUATE true
WHEN tax-collected < tax-owed
perform collect-payment
END-EVALUATE
perform check-out-this-miracle
to fo
"TRUE" y "FALSE" son palabras reservadas, no variables
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 133
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
when true perform gotcha
when false perform gotme
.T ció
END-EVALUATE
.
EVALUATE true
C
WHEN exento continue
.F a
WHEN gestion perform sacrificio
WHEN por-horas perform aumento-importante
C rm WHEN other
Esto implica algo tal como:
01 Employee-type
88 exento
88 gestion
perform aumento-bajo.
Pic X.
Value 'E' 'P' 'Q'.
Value 'M' 'V'.
to fo
88 por-horas Value 'H' thru 'L'.
Aunque "EVALUATE FALSE" es válido, no parece muy natural
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
134 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Los WHEN correspondientes deben contener el mismo número de
operandos separados con "ALSO":
.T ció
.
EVALUATE co-type also co-size also co-color
WHEN '1' also 'BIG' also 'BLUE'
C
perform Found-IBM
.F a
WHEN '1' also 'TALL' also 'RED'
perform Found-Houston-Comets
C rm WHEN '2'
WHEN 'Y'
also
also
'TALL'
perform Found-NY-Liberty
'LEAN'
perform Found-Yuppie
WHEN other
perform no-match-found
also
also
'BLUE'
'PAISLEY'
to fo
end-evaluate
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 135
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
EVALUATE true also emp-type
WHEN hours > 40 also 'E'
.T ció
move 'normal' to message-area
WHEN hours < 40 also ANY
.
move 'underworked' to message-area
C
WHEN hours > 40 also ANY
.F a
move 'overworked' to message-area
WHEN ANY also 'E'
Notas:
pr luc
Ex
___________________________________________________________________
136 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
C
Sentencia ACCEPT
.F a
Sentencia DISPLAY
C rm
Introducir las DECLARATIVES
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 137
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia ACCEPT
.I. n
Formato 1
.T ció
ACCEPT identificador-1
FROM nombre-nemotécnico-1
nombre-entorno
.
C
.F a
Transfiere datos desde un dispositivo de entrada al identificador-1.
C rm
Si se omite la opción FROM se asume el dispositivo de entrada del
sistema
Es muy útil en situaciones excepcionales del programa en los que
se requiere una intervención del operador (para dar un mensaje, un
to fo
código, ...)
Notas:
c
___________________________________________________________________
138 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
ACCEPT identificador-2 FROM DATE
YYYYMMDD
.T ció
DAY
YYYYDDD
DAY-OF-WEEK
.
TIME
C
.F a
Permite acceder a la fecha / hora activas, lo cual es útil para
obtener información para listados, ...
C rm 01 HOY.
02 ANYO-HOY
02 MES-HOY
02 DIA-HOY
PIC 9999.
PIC 99.
PIC 99.
to fo
...
ACCEPT HOY FROM DATE YYYYMMDD.
ec o v
oy si
Notas:
pr lu
Con esta sentencia se puede recibir información que hay en unos registros especiales
al identificador que se indica.
c
La fecha actual y la hora también pueden obtenerse por medio de las funciones exis-
tentes: CURRENT-DATE.
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 139
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
DAY YYYYDDD, DAY-OF-W EEK y TIME tienen de forma implícita
el USAGE DISPLAY. Dado que son variables de tipo conceptual no
deben describirse en el programa.
.T ció
.
IDENTIFICADOR-2 PICTURE FORMATO
C
DATE PIC 9(6) YYMMDD
.F a
DATE YYYYMMDD PIC 9(8) YYYYMMDD
DAY PIC 9(5) YYDDD
C rm
DAY YYYYDDD
DAY-OF-WEEK
TIME
PIC 9(7)
PIC 9(1)
PIC 9(8)
YYYYDDD
#
HHMMSS99
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
140 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia DISPLAY
Sentencia DISPLAY
.I. n
Formato
.T ció
DISPLAY identificador-1
literal-1
.
C
UPON nombre-nemotécnico-1 NO ADVANCING
.F a
nombre-entorno-1 WITH
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 141
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DECLARATIVES
DECLARATIVES
.I. n
.T ció
Con las DECLARATIVES se pueden indicar unas secciones a
invocar cuando se produzcan unas condiciones excepcionales.
Cuando finaliza la declarativa el control vuelve al punto desde el
.
que se la invocó siempre y cuando la excepción no sea crítica.
C
.F a
PROCEDURE DIVISION.
C rm DECLARATIVES.
IN-ERROR-HANDLER SECTION.
USE AFTER ERROR PROCEDURE ON IN-FILE.
IN-FILE-ROUTINE.
DISPLAY "CODIGO DE FILE STATUS = " FILE-FEEDBK.
to fo
STOP RUN.
END DECLARATIVES.
...
ec o v
oy si
pr lu
Notas:
c
___________________________________________________________________
142 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 151
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
.T ció
Presentar la INPUT-OUTPUT SECTION
.
C
.F a
Mostrar la función del FILE STATUS
C rm
Introducir el párrafo I-O-CONTROL
to fo
ec o v
oy si
pr lu
Notas:
1) FILE-CONTROL
Ex
Este párrafo sólo puede aparecer una vez, en el área A y acabando en punto. En
este párrafo se describen los archivos que se van a utilizar y su asociación con el
archivo externo
Los distintos archivos se indican con una cláusula SELECT que debe estar en el
áraea B y su definición debe finalizar con un punto. Los archivos pueden ser se-
cuenciales (VSAM o no), indexados y relativos
2) I-O-CONTROL
___________________________________________________________________
152 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FILE-CONTROL
.I. n
SELECT nom-archivo1 ASSIGN nombre-asign
.T ció
OPTIONAL TO
USING nombre
nombre1
.
RESERVE entero SEQUENTIAL
C
AREA ORGANIZATION
.F a
AREAS IS
...
C rm ACCESS
FILE
MODE
STATUS
IS
IS
SEQUENTIAL
nombre2
nombre3
to fo
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
ec o
Notas:
pr lu
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 153
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
OPTIONAL TO
USING nombre1
.T ció
RESERVE entero INDEXED
AREA ORGANIZATION
AREAS IS
.
RECORD nombre 2
C
ACCESS SEQUENTIAL KEY IS
.F a
MODE IS RANDOM
DYNAMIC
C rm
| entrada | STATUS nomb 4
PASSWORD nombre 3 FILE IS nomb5
IS
entrada:
ALTERNATE RECORD nombre 6
KEY IS DUPLICATES
WITH
to fo
En un archivo INDEXED la posición de cada registro se determina por unos índices que
mantiene el sistema. Los índices se basan en las KEYS que hay en el registro.
ec o v
oy si
Notas:
pr lu
Cada registro del archivo tiene una o más claves embebidas. Cada clave además está
asociada a un índice. El índice proporciona el camino de acceso a los registros. Los archivos
tienen que estar en dispositivos de almacenamiento de acceso directo (discos).
c
Cuando los registros de insertan, actualizan o se borran, se identifican por sus claves
Ex
primarias. Esta clave debe ser única y no puede cambiarse al actualizar el registro. El nombre
del campo donde se encuentra esta clave se indica en el RECORD KEY.
___________________________________________________________________
154 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FILE STATUS
El valor del FILE STATUS debe ser comprobado después de cada
petición de entrada/salida.
Si es cero: la operación de E/S ha sido correcta
.I. n
Cualquier otro valor indica que el programa puede requerir alguna
acción especial
.T ció
El FILE STATUS se inicializa con cada operación de E/S
El FILE STATUS debe definirse como una variable alfanumérica de
.
dos posiciones
C
.F a
FILE-CONTROL.
SELECT SAM-FILE ASSIGN TO ...
C rm
ORGANIZATION IS SEQUENTIAL ACCESS IS SEQUENTIAL
FILE STATUS IS FILE-STATUS.
...
77 FILE-STATUS PICTURE XX.
...
OPEN INPUT SAM-FILE
to fo
IF FILE-STATUS = "00"
PERFORM ...
ELSE
PERFORM .. .
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 155
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
VSAM:
VSAM RETURN CODE (2 octetos)
.T ció
VSAM FUNCTION CODE (2 octetos)
VSAM FEEDBACK CODE (2 octetos)
.
ENVIRONMENT DIVISION.
...
C
FILE-CONTROL.
.F a
SELECT VSAM-FILE ASSIGN TO ...
ORGANIZATION IS INDEXED ACCESS IS SEQUENTIAL
C rm
RECORD KEY IS PART-NUMB FILE STATUS FILE-STATS VSAM-RETN.
...
DATA DIVISION.
...
77 FILE-STATS PIC XX.
01 VSAM-RETN.
to fo
05 VSAM-RETN-CODE PIC 99 BINARY.
05 VSAM-FUNC-CODE PIC 99 BINARY.
05 VSAM-FDBK-CODE PIC 99 BINARY.
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
156 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
I-O-CONTROL
Párrafo I-O-CONTROL
.I. n
.T ció
El párrafo I-O-CONTROL de la Input-Output Section es opcional y se
utiliza para indicar cuando deben tomarse puntos de control y las áreas
.
de memoria que deben compartir los distintos archivos
C
.F a
En él se proporciona información necesaria para la transmisión
eficiente de datos entre el almacenamiento externo y el programa
C rm
to fo
ec o v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 157
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FILE SECTION
.I. n
Objetivos
.T ció
Definir la FILE SECTION
.
C
.F a
Presentar las definiciones de archivos
C rm
Introducir las modalidades Move y Locate
to fo
ec o v
oy si
pr luc
Notas:
Ex
De las tres secciones que puede tener la DATA DIVISION, se va a ver en este mo-
mento la FILE SECTION.
___________________________________________________________________
158 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
FILE SECTION
.I. n
Cada archivo que se utiliza en el programa debe describirse con una
.T ció
entrada FD o SD:
FD nombre-archivo
BLOCK CONTAINS nnn RECORDS
.
RECORD CONTAINS nnn TO nnn CHARACTERS
C
RECORDING MODE V.
.F a
01 registro.
C rm
Después de la FD deben escribirse una o más descripciones de
registro. Si hay más de una definición, queda implícita una
redefinición de la memoria
to fo
Las cláusulas de las FD pueden escribirse en cualquier orden
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 159
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
SELECT PRODUCT-FILE ASSIGN TO PRODFIL
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
.T ció
RECORD KEY IS PART-NUM.
...
DATA DIVISION.
FILE SECTION.
.
FD PRODUCT-FILE.
C
01 ITEM-MASTER.
.F a
05 ...
05 PART-NUM.
05 ...
C rm
...
PROCEDURE DIVISION.
...
...
OPEN INPUT PRODUCT-FILE
READ PRODUCT-FILE
to fo
CLOSE PRODUCT-FILE
STOP RUN.
//PRODFIL DD DSN=MASTER.PRODUCT,DISP=SHR
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
160 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
EJEMPLO 1 EJEMPLO 2
.T ció
DATA DIVISION. DATA DIVISION.
FILE SECTION. FILE SECTION.
FD PEDIDOS FD PEDIDOS
RECORD CONTAINS 53. RECORD CONTAINS 53.
.
01 REGISTRO-PEDIDOS. 01 REGISTRO-PEDIDOS PIC X(53).
04 CAMPO1 PIC X(10). ...
C
.F a
04 CAMPO2 PIC X(43). WORKING-STORAGE SECTION.
... 01 ESTRUCTURA-PEDIDO.
PROCEDURE DIVISOR. 04 CAMPO1 PIC X(10).
C rm
...
OPEN INPUT PEDIDOS
READ PEDIDOS AT END ...
IF CAMPO1 = "CUALQUIER "...
..
04 CAMPO2
PROCEDURE DIVISION.
...
OPEN INPUT PEDIDOS
PIC X(43).
to fo
READ PEDIDOS
INTO ESTRUCTURA-PEDIDO
AT END ...
IF CAMPO1 = "CUALQUIER "...
ec o v
oy si
Notas:
pr lu
En el ejemplo 2 los datos se traspasan desde el area de memoria del archivo a una
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 161
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
.T ció
Conocer las sentencias OPEN y CLOSE
.
C
.F a
Proceso del END OF FILE
C rm
Presentar el proceso Random
Notas:
c
Ex
___________________________________________________________________
162 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia OPEN
Sentencia OPEN
.I. n
Formato 1 -- Archivos secuenciales
.T ció
OPEN INPUT archivo 1
REVERSED
.
NO REWIND
WITH
C
.F a
OUTPUT archivo 2
NO REWIND
C rm I-O archivo 3
WITH
to fo
EXTEND archivo 4
Notas:
c
Un archivo debe abrirse antes de poder procesarlo. Cuando se abre, debe indicarse la
forma con la que se va a operar con él:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 163
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia CLOSE
Sentencia CLOSE
.I. n
Formato 1 -- Archivos secuenciales
.T ció
CLOSE archivo
REEL
REMOVAL
.
UNIT
FOR
C
.F a
WITH NO REWIND
NO REWIND
C rm WITH
Notas:
c
Esta sentencia debe ejecutarse para cada archivo que esta abierto.
Ex
___________________________________________________________________
164 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato 1 -- Acceso secuencial
.T ció
READ archivo
NEXT RECORD INTO identificador
.
C
.F a
END sentencia 1
AT
C rm NOT
AT
END sentencia 2 END-READ
to fo
Cuando se ejecuta la sentencia READ el archivo debe estar abierto en
modalidad INPUT o I-O
La cláusula AT END debe estar antes que la NOT AT END
ec o v
oy si
pr lu
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 165
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de READ
...
DATA DIVISION.
.I. n
...
WORKING-STORAGE SECTION.
.T ció
77 END-OF-FILE-INDIC PIC X VALUE "N".
88 EOF-NOTYET VALUE "N".
88 EOF-REALLY VALUE "Y".
...
.
PROCEDURE DIVISION.
C
OPEN INPUT FILEIN
.F a
...
PERFORM UNTIL EOF-REALLY
C rm READ FILEIN
AT END SET EOF-REALLY TO TRUE
NOT AT END PERFORM REG-PROCESS
END-READ
END-PERFORM
to fo
...
CLOSE FILEIN
...
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
166 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
registro es 'indefinido'
.T ció
Con un 'AT END' ocurre:
.
Se transfiere control a lo indicado en el AT END (se ignora cualquier
C
.F a
procedimiento indicado en USE AFTER STANDARD ERROR)
C rm
Si no se indica una cláusula AT END debe indicarse un procedimiento
de USE AFTER STANDARD ERROR y se ejecutará lo que allí se
indique. Cuando finaliza, el control se cede a la sentencia siguiente a la
READ.
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 167
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato 2 -- Acceso al azar
.T ció
READ archivo
RECORD INTO identificador
.
C
.F a
KEY nombre INVALID sentencia imperativa 1
IS KEY
C rm NOT INVALID
KEY
sentencia imperativa 2 END-READ
to fo
En archivos VSAM INDEXED, el valor indicado en la variable del
KEY se busca dentro del archivo hasta encontrar un registro con
este valor
ec o
Notas:
c
___________________________________________________________________
168 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
ASSIGN PRODMSTR
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
.T ció
RECORD KEY IS PART-NUMBER.
DATA DIVISION.
FILE SECTION.
FD PROD-MASTER
.
RECORD CONTAINS 45.
C
01 PRODMSTR-RECORD.
.F a
05 PART-DESCRIPTION PIC ...
05 PART-NUMBER PIC ...
05 ...
C rm
...
PROCEDURE DIVISION.
...
OPEN INPUT PROD-MASTER
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 169
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
dependiendo de la sentencia READ
.T ció
El acceso dinámico sólo es posible con organizaciones VSAM KSDS
o RRDS
.
El acceso dinámico se establece con la opción ACCESS IS
C
.F a
DYNAMIC de la sentencia SELECT del FILE-CONTROL
C rm
La opción NEXT debe indicarse para el acceso secuencial en modo
dinámico. Para poder realizar un READ NEXT, debe haberse
ejecutado una sentencia OPEN, START o READ para posicionar el
archivo
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
170 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia START
Sentencia START
.I. n
Formato
START archivo
.T ció
KEY EQUAL nombre
TO
IS =
LESS
.
THAN
<
C
.F a
GREATER
THAN
>
NOT LESS
C rm NOT <
NOT GREATER
NOT >
LESS
THAN
THAN
THAN
OR EQUAL
TO
to fo
<=
GREATER OR EQUAL
THAN TO
>=
Notas:
c
INPUT o I-O.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 171
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia WRITE
Sentencia WRITE
.I. n
La sentencia W RITE libera un registro lógico para un archivo de tipo
.T ció
output o input/output
.
Al ejecutarse un W RITE:
C
.F a
el archivo secuencial asociado debe estar abierto como OUTPUT o
en modo EXTEND
Notas:
c
Ex
___________________________________________________________________
172 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia WRITE
Formato
WRITE nombre-reg
FROM identificador-1
.I. n
| frase | END-WRITE
BEFORE identif-2
.T ció
AFTER ADVANCING entero LINE
LINES
nemotécnico
.
PAGE
C
| invalid key | | no invalid key |
.F a
frase:
C rm AT
NOT
invalid key:
EOP
INVALID
AT
END-OF-PAGE
EOP
sentencia imperativa-2
sentencia imperativa 3
to fo
no invalid key: KEY
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 173
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
FILE-CONTROL. SELECT PRINT-FILE
ASSIGN SYSPRINT.
...
.T ció
DATA DIVISION.
FILE SECTION.
FD PRINT-FILE RECORD CONTAINS 132.
01 PRINT-LINE.
.
05 PRT-IMAGE PIC X(132).
...
C
WORKING-STORAGE
.F a
77 COUNTER PIC 99.
...
PROCEDURE DIVISION.
...
AFTER ADVANCING 2
to fo
WRITE PRINT-LINE
AFTER ADVANCING COUNTER LINES
...
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
174 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Control de impresora
.I. n
.T ció
Cuando se indica END-OF-PAGE y se detecta esta situación durante la
ejecución de la sentencia W RITE, se ejecuta lo indicado en esta opción.
Si hay un END-OF-PAGE la correspondiente FD debe incluir la cláusula
.
LINAGE
C
.F a
Hay una opción de compilación (ADV o NOADV) que tiene su
importancia en la descripción del registro. Con NOADV la primera
C rm
posición del registro es para control de la impresora y la longitud del
registro pasará a tener una posición más (133 contra 132)
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 175
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
SPECIAL-NAMES. C01 IS NEW-PAGE.
INPUT-OUTPUT SECTION.
.T ció
FILE-CONTROL.
SELECT PRINT-FILE ASSIGN UPDPRINT.
DATA DIVISION.
.
FILE SECTION.
C
FD PRINT-FILE
.F a
RECORDING MODE F
BLOCK 0 RECORDS
Notas:
pr luc
Ex
___________________________________________________________________
176 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION.
OPEN OUTPUT PRINT-FILE
.I. n
...
MOVE DETAIL1-LINE TO PRT-LINE
PERFORM 330-PRINT-REPORT
.T ció
MOVE DETAIL2-LINE TO PRT-LINE
PERFORM 330-PRINT-REPORT.
...
330-PRINT-REPORT.
.
IF LINE-COUNT > 50
C
ADD 1 TO PAGE-COUNT
.F a
MOVE PAGE-COUNT TO HDR-PAGE-NUMBER
WRITE PRT-RECD FROM HDR1-LINE AFTER NEW-PAGE
MOVE ALL "=" TO PRT-RECD
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 177
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
ENVIRONMENT DIVISION.
.T ció
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PRINT-FILE ASSIGN UPDPRINT.
.
DATA DIVISION.
FILE SECTION.
C
.F a
FD PRINT-FILE
RECORDING MODE F
BLOCK 0 RECORDS
...
v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
178 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
...
MOVE DETAIL1-LINE TO PRT-LINE
PERFORM 330-PRINT-REPORT
.T ció
MOVE DETAIL2-LINE TO PRT-LINE
PERFORM 330-PRINT-REPORT.
...
330-PRINT-REPORT.
.
WRITE PRT-RECD FROM PRT-LINE AFTER ADVANCING 1
C
AT END-OF-PAGE PERFORM HEADERS
.F a
NOT AT END-OF-PAGE ...
MOVE SPACES TO PRT-LINE.
...
C rm HEADERS.
ADD 1 TO PAGE-COUNT
MOVE PAGE-COUNT TO HDR-PAGE-NUMBER
WRITE PRT-RECD FROM HDR1-LINE AFTER NEW-PAGE
MOVE ALL "=" TO PRT-RECD
WRITE PRT-RECD AFTER ADVANCING 3 LINES
to fo
MOVE SPACES TO PRT-RECD
WRITE PRT-RECD AFTER ADVANCING 1 LINE.
...
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 179
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato 2 -- Archivos Indexados y Relativos
.T ció
WRITE nombre-reg
FROM identificador
.
C
.F a
INVALID sentencia imperativa 1
KEY
C rm NOT INVALID
KEY
sentencia imperativa 2 END-WRITE
to fo
Permite añadir un registro a un VSAM KSDS o RRDS
Antes de ejecutar la sentencia W RITE debe darse valor a la clave
ec o v
oy si
pr lu
Notas:
c
Si también se han indicado ALTERNATE RECORD KEY estas deben ser únicas a
menos que se haya indicado la opción DUPLICATES.
___________________________________________________________________
180 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia REWRITE
Sentencia REWRITE
.I. n
Formato
.T ció
REWRITE nombre-reg
FROM identificador
.
C
INVALID sentencia imperativa 1
.F a
KEY
C rm NOT INVALID
KEY
sentencia imperativa 2 END-REWRITE
to fo
Se utiliza para actualizar un registro
El archivo debe estar abierto como I-O
Se produce una condición INVALID KEY si se intenta cambiar la
ec o
clave primaria
v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 181
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia DELETE
Sentencia DELETE
.I. n
Formato
.T ció
DELETE archivo
RECORD
.
C
.F a
INVALID sentencia imperativa 1
KEY
C rm NOT INVALID
KEY
sentencia imperativa 2 END-DELETE
to fo
Permite eliminar un registro de un archivo KSDS o RRDS
El archivo debe estar abierto como I/O
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
182 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
Definir la sentencia COPY
C
.F a
Conocer el COPY REPLACING
Introducir el pseudo texto del REPLACING
C rm
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 187
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia COPY
Sentencia COPY
.I. n
Formato
.T ció
COPY texto
literal-1 OF nombre-biblioteca
IN literal-2
.
.
C
SUPPRESS
.F a
REPLACING operando-1 BY operando-2
C rm
La sentencia COPY permite insertar texto, previamente codificado,
en un programa
Cada COPY debe finalizar con punto
to fo
Si no se indica el 'nombre-biblioteca', se asume SYSLIB
La opción SUPPRESS hace que lo que se inserta no aparezca en el
listado del programa
ec o
Notas:
___________________________________________________________________
188 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
COPY FILEA.
.T ció
FILEA contiene: ADDR contiene:
01 FILEA. 05 STREET PIC X(40).
.
05 NAME PIC X(40). 05 CITY PIC X(20).
C
COPY ADDR. 05 STATE PIC X(02).
.F a
05 STUFF PIC X(100). 05 ZIP PIC X(09).
Notas:
pr lu
En el COBOL de IBM las sentencias COPY pueden tener internamente otra sentencia
COPY.
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 189
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
El miembro de la biblioteca no se modifica
.T ció
COPY PAYLIB REPLACING
CAMPOA BY REGISTRO-PAGOS
.
CAMPOB BY PRECIO-HORA
C
.F a
CAMPOC BY HORAS-TRABAJO.
C rm
TEXTO EN BIBLIOTECA
01 CAMPOA.
02 CAMPOB PIC 999V99.
PROGRAMA FUENTE
01 REGISTRO-PAGOS.
02 PRECIO-HORA PIC 999V99.
to fo
02 CAMPOC PIC 999V99. 02 HORAS-TRABAJO PIC 999V99.
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
190 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
pseudotexto (==).
.T ció
COPY PAYLIB REPLACING
==:PFFX:== BY ==PAY==.
.
MIEMBRO EN BIBLIOTECA
C
01 :PFFX:.
.F a
02 :PFFX:-RTE PIC 999V99.
ENTRADA AL COMPILADOR
01 PAY.
to fo
02 PAY-RTE PIC 999V99.
02 PAY-HRS PIC 999V99.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 191
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
REPLACE
.I. n
incluye con un COPY
La acción de reemplazar se inicia con la sentencia REPLACE y
.T ció
continua hasta:
.
Una sentencia REPLACE OFF
C
El final del programa
.F a
Las sentencias REPLACE las procesa el compilador cuando ya no
C rm
quedan COPY pendientes
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
192 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Definir OCCURS
.
C
Introducir INDEXING
.F a
Visión de la organización de las matrices
C rm
La subindexación
Definir SEARCH
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 193
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Cláusula OCCURS
.I. n
Cláusula OCCURS - Tablas de longitud fija
.T ció
Formato 1 -- Tablas de longitud fija
.
OCCURS entero
C
TIMES
.F a
C rm ASCENDING
DESCENDING KEY IS
nombre
to fo
INDEXED nombre-indice
BY
Notas:
Ex
___________________________________________________________________
194 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
TIMES ON
.T ció
ASCENDING nombre-2
KEY IS
.
DESCENDING
C
.F a
INDEXED nombre-indice
C rm BY
Notas:
pr lu
El número de ocurrencias de la tabla no es fijo si no que depende del valor que tenga
nombre-1 y que debe estar entre los dos valores indicados en entero-1 y entero-2.
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 195
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
INDEXACIÓN
Un nombre de índice es un identificador que se asocia a una
determinada tabla. El valor de un índice es el desplazamiento desde el
.I. n
inicio de la tabla, de acuerdo con el tamaño del elemento
.T ció
Un nombre de índice puede aparecer en una cláusula OCCURS:
01 TABLE-OF-MONTHS.
02 MONTHS OCCURS 12 TIMES INDEXED BY NDX PIC X(10).
.
C
El nombre de índice lo crea el compilador y no debe ser definido en el
.F a
programa
C rm
El contenido de un índice puede cambiarse con la sentencia SET TO
Un índice no puede utilizarse ni en una sentencia MOVE ni en una
INITIALIZE
to fo
ec o v
oy si
Notas:
pr lu
Las tablas así definidas permitirán el uso de sentencias de búsqueda, así como la ma-
nipulación de sus datos.
c
Ex
___________________________________________________________________
196 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
000031 009800 PROCEDURE DIVISION.
000032 009900 MOVE "A" TO INNER (1 1 1)
000033 009910 MOVE "B" TO INNER (2 1 1)
000034 009920 MOVE "C" TO INNER (3 1 1)
.T ció
000035 009930 MOVE "D" TO INNER (4 1 1)
000036 009940 MOVE "E" TO INNER (5 1 1)
000037 009941 MOVE "F" TO INNER (1 2 1)
000038 009942 MOVE "G" TO INNER (1 3 1)
000039 009943 MOVE "H" TO INNER (1 4 1)
.
000040 009944 MOVE "I" TO INNER (1 5 1)
000041 009945 MOVE "J" TO INNER (1 1 2)
C
000042 009946 MOVE "K" TO INNER (1 1 3)
000043 009947 MOVE "L" TO INNER (1 1 4)
.F a
000044 009948 MOVE "M" TO INNER (1 1 5)
000045 009949 MOVE "N" TO INNER (5 5 5)
000046 009950 DISPLAY OUTER (1)
C rm
000047 009960 DISPLAY OUTER (2)
000048 009970 DISPLAY OUTER (3)
000049 009980 DISPLAY OUTER (4)
000050 009990 DISPLAY OUTER (5)
000051 010000 DISPLAY TABLE-X
000052 010300 STOP RUN.
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 197
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Subindices
.I. n
Subindices
.T ció
Los subíndices son una forma de hacer referencias a una tabla
.
Un subíndice es un número positivo que indica la ocurrencia a la que
C
se hace referencia
.F a
Pueden existir 7 niveles de subindexación
C rm
Los subindices se indican entre paréntesis
El número de subindices debe ser igual al de dimensiones de la tabla
referenciada
to fo
...
01 TABLE-THREE.
05 ELEMENT-1 OCCURS nn TIMES.
10 ELEMENT-2 OCCURS nn TIMES.
ec o
...
MOVE ELEMENT-3 (SUB1 SUB2 SUB3) TO ...
oy si
pr luc
Notas:
Ex
___________________________________________________________________
198 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de subíndices
01 TABLE-ELEMENT PIC X(3) OCCURS 10 TIMES.
01 XYZ-FLAG PIC X(3).
.I. n
88 NO-XYZ VALUE 'MAL'.
88 FOUND-XYZ VALUE 'OLE'.
.T ció
77 COUNTIT BINARY PIC 999 VALUE 1.
...
PROCEDURE DIVISION.
.
...
C
SET NO-XYZ TO TRUE
.F a
PERFORM UNTIL COUNTIT > 10
IF TABLE-ELEMENT(COUNTIT) = 'XYZ'
C rm
SET FOUND-XYZ TO TRUE
ADD 10 TO COUNTIT
ELSE
ADD 1 TO COUNTIT
END-IF
to fo
END-PERFORM
...
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 199
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato 1 -- Búsqueda secuencial
.T ció
SEARCH identificador-1
VARYING identificador-2
nombre-indice
.
C
.F a
END sentencia-imperativa-1
AT
BY
v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
200 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia SET
Sentencia SET
.I. n
Cuando se ejecuta esta sentencia el valor se coloca un valor
determinado al índice
.T ció
Formato 1 -- SET (dar valor)
.
identificador-1 identificador-2
C
entero
.F a
C rm
Con este formato se incrementa (UP BY) o se decrementa (DOW N
BY) el valor que tiene el índice en la cantidad indicada
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 201
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
05 TABLE-ELMT OCCURS nnn TIMES INDEXED BY NDX.
10 KEYFIELD ...
10 REST-OF-STUFF ...
.T ció
PROCEDURE DIVISION.
...
SET NDX TO 1
.
SEARCH TABLE-ELMT VARYING NDX
C
WHEN KEYFIELD(NDX) = SEARCH-ARG
.F a
SET FOUND TO TRUE
WHEN KEYFIELD(NDX) = HIGH-VALUES
SET NOT-FOUND TO TRUE
C rm END-SEARCH
IF FOUND
...
END-IF
IF NOT-FOUND
to fo
DISPLAY SEARCH-ARG " NO ESTA EN LA TABLA."
END-IF
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
202 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Formato 2 -- Búsqueda binaria
.T ció
SEARCH ALL identificador-1
END sentencia-imperativa-1
AT
WHEN nombredat1 EQUAL identificador-2
.
IS TO literal-1
= expr.aritmetica-1
C
nombre-condición-1
.F a
C rm AND nombredat2
nombre-condición-2
IS
EQUAL
=
TO
identificador-3
literal-2
expr.aritmetica-2
to fo
sentencia-imperativa-2
NEXT SENTENCE END-SEARCH
Notas:
c
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 203
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
01 WHOLE-TABLE.
03 TABLE-ELMT OCCURS 1 TO 250 TIMES
.T ció
DEPENDING ON PARM2
ASCENDING KEY IS KEYFIELD INDEXED BY NDX.
05 KEYFIELD PIC X(n).
05 ...
.
...
C
.F a
PROCEDURE DIVISION.
MOVE ... TO PARM2
Notas:
pr luc
Ex
___________________________________________________________________
204 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Ver las sentencias
.
C
Inspect
.F a
String
Unstring
C rm
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 207
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia INSPECT
INSPECT TALLYING
.I. n
INSPECT TALLYING
.T ció
Permite contar las ocurrencias de un determinado carácter
.
(alfabético, numérico, o especial) de un campo
C
.F a
Formato 1 y Formato 3
(ver formato 2)
ec o
frase:
BEFORE identificador-4
v
Notas:
Ex
Con la opción TALLYING se pueden saber las veces que aparece un determinado ca-
rácter en una variable (alfanumérica o númerica DISPLAY).
___________________________________________________________________
208 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
INSPECT REPLACING
INSPECT REPLACING
.I. n
Formato 2
.T ció
INSPECT iden-1 REPLACING
CHARACTERS BY iden-5
.
literal-3 | frase |
C
iden-3 BY iden-5
.F a
ALL
LEADING literal-1 literal-3 | frase |
frase: FIRST
C rm BEFORE
AFTER INITIAL
iden-4
literal-2
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 209
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
INSPECT CONVERTING
INSPECT CONVERTING
.I. n
Formato 4
.T ció
INSPECT identif-1 CONVERTING identif-6 TO
literal-4
.
identif-7 BEFORE iden-4
C
literal-5 AFTER INITIAL literal-2
.F a
Permite cambiar todas las apariciones de los caracteres indicados
E V O L V E D
ec o
G A R B A G E
v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
210 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplos
Ejemplos de INSPECT
.I. n
La sentencia INSPECT funciona distinto utilizando REPLACING o
.T ció
CONVERTING
CONVERTING
.
INSPECT FIELD1 CONVERTING "ABC" BY
C
"XYZ"
.F a
Cambia 'ABC123AAA' a 'XYZ123XXX'
C rm
REPLACING
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 211
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia STRING
Sentencia STRING
.I. n
Formato
.T ció
DELIMITED
literal-1 BY literal-2
SIZE
.
INTO identif-3
POINTER identif-4
C
WITH
.F a
C rm NOT
ON
OVERFLOW
OVERFLOW
sentencia imperativa1
Notas:
c
Ex
___________________________________________________________________
212 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de STRING
El ejemplo toma un número de teléfono de 10 dígitos y lo formatea:
.I. n
WORKING-STORAGE SECTION.
.T ció
01 TELEPHONE.
04 AREACODE PIC 9(3).
04 LOCAL-NO PIC 9(7).
77 PRETTY-TELEPHONE PIC X(20).
.
PROCEDURE DIVISION.
C
...
.F a
STRING
"(" DELIMITED BY SIZE
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 213
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia UNSTRING
Sentencia UNSTRING
.I. n
Formato
UNSTRING
.T ció
identif-1
DELIMITED identif-2
BY ALL literal-1
.
OR identif-3
ALL literal-2
C
.F a
INTO identif-4
DELIMITER identif-5 COUNT identif-6
IN IN
C rm WITH
POINTER identif-7 TALLYING
IN
identif-8
to fo
OVERFLOW sentencia imperativa1
ON
Notas:
c
Ex
___________________________________________________________________
214 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de UNSTRING
.I. n
"IBM DAYTON;33 W.FIRST ST.;DAYTON, OH 45402\DAY".
01 ADDRESS2.
.T ció
05 LINE1 PIC X(80).
05 LINE2 PIC X(80).
05 LINE3 PIC X(80).
.
...
C
UNSTRING ADDRESS1 DELIMITED BY ";" OR "\"
.F a
INTO LINE1 LINE2 LINE3
END-UNSTRING
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 215
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
216 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Conocer la sentencia SORT
.
C
Conocer la sentencia MERGE
.F a
Presentar las posibilidades del SORT
C rm
Presentar las sentencias RELEASE / RETURN
Ver la opción FASTSRT
Registro especial SORT-RETURN
to fo
Archivo de control del SORT
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 217
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
PROCEDURE DIVISION
Sentencia SORT
.I. n
Sentencia SORT
.T ció
Formato
.
C
DUPLICATES
.F a
WITH IN ORDER
C rm
SEQUENCE alfabeto-1
COLLATING IS
USING archivo2
INPUT PROCEDURE procedim-1
IS THROUGH procedim-2
to fo
THRU
GIVING archivo3
OUTPUT PROCEDURE procedim-3
IS THROUGH procedim-4
THRU
ec o
Notas:
Ex
___________________________________________________________________
218 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de SORT
INPUT-OUTPUT SECTION.
FILE-CONTROL.
.I. n
SELECT SORTINPT ASSIGN SORTINPT.
SELECT SORTOUT ASSIGN SORTOUT.
SELECT SORTWORK ASSIGN SORTWORK.
...
.T ció
DATA DIVISION.
FILE SECTION.
FD SORTINPT RECORD CONTAINS 80.
01 SORT-INPUT PIC X(80).
.
FD SORTOUT RECORD CONTAINS 80.
01 SORT-OUTPT PIC X(80).
C
SD SORTWORK RECORD CONTAINS 80.
.F a
01 SORT-RECORD.
05 MINOR-FLD PIC X(6).
05 INTERMED-FLD PIC X(8).
C rm
...
...
05 MAJOR-FLD
05 FILLER
PROCEDURE DIVISION.
SORT SORTWORK
PIC
PIC
X(8).
X(58).
to fo
ASCENDING KEY MAJOR-FLD INTERMED-FLD MINOR-FLD
USING SORTINPT GIVING SORTOUT.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 219
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia MERGE
Sentencia MERGE
Formato
.I. n
MERGE archivo1 ASCENDING nombredat-1
ON DESCENDING KEY
.T ció
SEQUENCE alfabeto-1
COLLATING
.
IS
C
.F a
USING archivo2 archivo3
C rm GIVING archivo4
OUTPUT PROCEDURE
IS
procedim-1
THROUGH
THRU
procedim-2
to fo
Con MERGE se pueden fusionar dos o más archivos que estén
clasificados por los mismos conceptos y pasarlos a un proceso o a un
archivo de salida
ec o v
oy si
pr lu
Notas:
Como puede comprobarse es muy similar a la SORT. Aquí no existe la INPUT PRO-
c
___________________________________________________________________
220 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Consideraciones
.I. n
Procesos del SORT
.T ció
En los procesos se pueden añadir, eliminar, modificar o editar
registros
.
En la INPUT PROCEDURE se puede realizar un proceso previo a la
C
fase de clasificación
.F a
Si se especifica OUTPUT PROCEDURE se puede realizar un
C rm
proceso con los registros ya clasificados
En el proceso de entrada una sentencia RELEASE lleva un registro a
clasificar
En el proceso de salida la sentencia RETURN proporciona un registro
to fo
ya clasificado
ec o v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 221
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
SENTENCIA RELEASE
Sentencia RELEASE
.I. n
Formato
.T ció
RELEASE registro
FROM identificador
.
C
.F a
Sólo se puede utilizar en un proceso de entrada al SORT
La sentencia RELEASE pone a disposición de la fase inicial del
C rm
proceso del SORT el contenido del registro
Al finalizar la INPUT PROCEDURE, el archivo de clasificación
contiene todos los registros que se han colocado con la sentencia
RELEASE
to fo
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
222 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
SENTENCIA RETURN
Sentencia RETURN
Formato
.I. n
RETURN archivo
.T ció
RECORD INTO identificador
.
C
.F a
NOT END sentencia imperativa-2 END-RETURN
AT
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 223
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
FD SORTINPT RECORD CONTAINS ...
01 SORT-INPUT PIC ...
FD SORTOUT RECORD CONTAINS ...
.T ció
01 SORT-OUTPT PIC ...
SD SORTWORK RECORD CONTAINS 96.
01 SORT-RECORD.
.
05 SORT-MAJOR PIC X(8).
C
05 SORT-MINOR PIC X(8).
.F a
05 ORIG-REC PIC X(80).
...
C rmPROCEDURE DIVISION.
SORT SORTWORK
ASCENDING KEY SORT-MAJOR SORT-MINOR
INPUT PROCEDURE PROC-IN
OUTPUT PROCEDURE PROC-OUT
to fo
STOP RUN.
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
224 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
AT END SET EOF-INDIC TO TRUE
END-READ
PERFORM WITH TEST BEFORE UNTIL EOF-INDIC
.T ció
...
...
RELEASE SORT-RECORD
READ SORTINPT INTO ORIG-RECORD
.
AT END SET EOF-INDIC TO TRUE
C
END-READ
.F a
END-PERFORM.
PROC-OUT.
OPEN OUTPUT SORTOUT
C rm
RETURN SORTWORK RECORD
AT END SET EOF-INDIC TO TRUE
NOT END SET NOT-EOF TO TRUE
END-RETURN
PERFORM WITH TEST BEFORE UNTIL EOF-INDIC
...
WRITE SORT-OUTPT FROM ORIG-RECORD
to fo
RETURN SORTWORK RECORD
AT END SET EOF-INDIC TO TRUE
END-RETURN
END-PERFORM.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 225
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
OPCIÓN FASTSRT
Opción FASTSRT
.I. n
La opción de compilación FASTSRT mejora el rendimento de la
.T ció
mayoría de procesos de clasificación en E/S si el SORT se ha
codificado en el formato "SORT ... USING" y/o "SORT ... GIVING"
.
Si se especifica FASTSRT, el DFSORT realiza la E/S de los
C
archivos nombrados en las sentencias:
.F a
SORT ... USING ...
SORT ... GIVING ...
C rm
El COBOL puede dar mensajes de compilación en los siguientes
casos:
No se ha indicado FASTSRT pero la ejecución podría beneficiarse
de su uso
to fo
Se ha indicado FASTSRT pero no se cumplen todos los
requisitos
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
226 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
REGISTRO SORT-RETURN
SORT-RETURN
.I. n
El SORT actualiza un registro especial (SORT-RETURN) que puede
.T ció
ser comprobado por el programa COBOL
Los valores posibles son:
0 ejecución correcta
.
16 ejecución con errores
C
.F a
PROCEDURE DIVISION.
...
C rm SORT SORTWORK
ASCENDING KEY MAJOR-FLD INTERMED-FLD MINOR-FLD
USING SORTINPT
GIVING SORTOUT.
...
to fo
IF SORT-RETURN NOT = 0
DISPLAY 'SORT ENDED ABNORMALLY. SORT-RETURN = '
SORT-RETURN
END-IF
ec o
...
v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 227
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
El DDNAME por omisión es 'IGZSRTCD'
.T ció
Si se codifica:
.
C
MOVE 'SORTDD' TO SORT-CONTROL
.F a
las sentencias de control del Sort/Merge deben incluirse en el
C rm
archivo cuyo ddname sea 'SORTDD'
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
228 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Conocer la sentencia CALL
.
C
Presentar la CALL BY CONTENT / REFERENCE
.F a
Definir la LINKAGE SECTION
C rm
Presentar los POINTERS
Conocer los registros especiales que pueden utilizarse en las
sentencias CALL
to fo
Conocer otra utilización de la sentencia SET
Ver como se reciben parámetros desde el JCL
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 231
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Sentencia CALL
.I. n
.T ció
Sentencia CALL
Formato
identificador-1
.
CALL
literal-1
*
C
ptr-procedim-1 USING | cláusula |
.F a
C rm RETURNING identificador-5
| con excepción |
ON
OVERFLOW
* | sin excepción |
sent.imperativa-3
*
to fo
END-CALL
* (ver siguiente visual)
ec o
Notas:
Ex
Sirve para transferir el control a otro programa dentro de la misma unidad de ejecu-
ción. El programa que recibe el control con la sentencia CALL recibe el nombre de subpro-
grama. En la cláusula USING se indican los argumentos que se pasan al subprograma.
___________________________________________________________________
232 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplos de CALL
.I. n
CALL "PROGA" USING ...
ON EXCEPTION SET BAD-CALL TO TRUE
.T ció
NOT ON EXCEPTION SET GOOD-CALL TO TRUE
END-CALL
IF BAD-CALL ...
.
C
CALL con identificador:
.F a
77 PGM-NAME PIC X(8).
C rm
...
MOVE "PROGA" TO PGM-NAME
CALL PGM-NAME USING ...
ON EXCEPTION SET BAD-CALL TO TRUE
NOT ON EXCEPTION SET GOOD-CALL TO TRUE
END-CALL
to fo
IF BAD-CALL ...
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 233
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
cláusula:
.I. n
identificador-2
REFERENCE ADDRESS OF
.T ció
BY archivo
OMITTED
CONTENT identificador-3
BY ADDRESS OF
.
LENGTH OF
literal-2
C
.F a
OMITTED
VALUE identificador-4
BY ADDRESS OF
C rm
con excepción:
ON
EXCEPTION
LENGTH OF
literal-3
sent.imperativa-1
to fo
sin excepción:
Notas:
pr lu
___________________________________________________________________
234 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
invocado
Con CALL ... BY CONTENT el subprograma accede a una copia de
.T ció
los datos del programa que le ha invocado. No puede modificar los
valores originales
.
Una sentencia CALL puede contener ambas técnicas
C
.F a
WORKING-STORAGE SECTION.
01 RECORD-A.
C rm
05 FIELD1 PIC ...
05 FILLER ...
...
PROCEDURE DIVISION.
...
CALL "XXXXXX" USING BY REFERENCE RECORD-A
to fo
BY CONTENT LENGTH OF RECORD-A
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 235
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
LINKAGE SECTION
.I. n
LINKAGE SECTION
.T ció
En esta sección de la DATA DIVISION se definen los datos que son
.
pasados por otro programa
C
.F a
No ocupan memoria
No se puede utilizar la cláusula VALUE (salvo en los niveles 88)
C rm DATA DIVISION.
WORKING-STORAGE SECTION.
...
to fo
LINKAGE SECTION.
01 BASIC-RECD.
05 AAA ...
05 BBB ...
ec o
Notas:
Ex
___________________________________________________________________
236 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
WORKING-STORAGE SECTION.
01 PARM-LIST.
.T ció
05 PARTPREFIX PIC A.
05 PARTNO PIC X(4).
05 USA-SALES PIC 9(5).
.
...
C
PROCEDURE DIVISION.
.F a
...
... LINKAGE SECTION.
C rm CALL CALLED-PGM
USING PARM-LIST.
...
...
01 USING-LIST.
10 PART-ID PIC X(5).
10 SALES
...
PIC 9(5).
PROCEDURE DIVISION
to fo
USING USING-LIST.
...
GOBACK.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 237
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
//STEPNAM EXEC PGM=xxxxxxx,...,
.T ció
// PARM='user-parameter'
.
trata de una serie de un máximo de 100 caracteres):
C
.F a
LINKAGE SECTION.
01 PARM-STRING.
C rm ...
02 PARM-LENG
02 PARM-TEXT
PIC 99 BINARY.
PIC X(100).
Notas:
pr luc
Ex
___________________________________________________________________
238 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Otras consideraciones
¿Qué es un POINTER?
.I. n
POINTER
.T ció
Una variable tipo POINTER es:
una variable elemental de 4 u 8 octetos
Se utiliza para direccionamiento
.
Se define con
C
USAGE IS POINTER si es un puntero a una variable
.F a
USAGE IS PROCEDURE-POINTER si es un puntero a una
dirección de un punto de entrada
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 239
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
SET ADDRESS
.I. n
Formato 5 -- SET (para punteros de datos)
.T ció
SET identificador-1
ADDRESS OF identificador-2
.
TO identificador-3
ADDRESS OF identificador-4
C
.F a
NULL
NULLS
C rm
Formato 6 -- SET (para punteros de procedimientos)
SET puntero-procedimiento-1
puntero-procedimiento-2
to fo
TO
ENTRY identificador-1
literal-1
NULL
NULLS
ec o
puntero-procedimiento-3
v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
240 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Registros especiales
Registros especiales
.I. n
ADDRESS OF
.T ció
Puede utilizarse para obtener una dirección
Existe para cada registro (nivel 01 o 77) de la LINKAGE
SECTION
.
Su definición implícita es USAGE IS POINTER
C
.F a
LENGTH OF
Permite conocer la longitud actual de una variable. Existe un
registro especial LENGTH OF por cada identificador utilizado en
C rm una LENGTH OF
En un elemento de una tabla, LENGTH OF hace referencia a una
ocurrencia (no hay que subscribir)
Su definición implícita es PIC 9(9) USAGE IS BINARY
to fo
DISPLAY FIELD-A " " LENGTH OF FIELD-A
ec o v
oy si
pr lu
Notas:
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 241
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
242 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
Definir la unidad de ejecución
.
Introducir el concepto de programas anidados
C
.F a
Definir los programas COMMON
C rm
Introducir el concepto de datos GLOBAL
Introducción a los datos EXTERNAL
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 245
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Unidad de ejecución
Para el COBOL se trata de uno o más programas objeto (escritos en
COBOL o no)
.I. n
El programa principal puede hacer CALL a un subprograma y este a su
vez a otro subprograma
.T ció
Un programa llamado devuelve control al programa principal o finaliza
la unidad de ejecución
.
Un programa principal puede finalizar la ejecución con:
C
STOP RUN
.F a
GOBACK
C rm
Un subprograma puede finalizar su ejecución con:
EXIT PROGRAM
STOP RUN
GOBACK
to fo
Unidad de ejecución
A: CALL B B: CALL C C: GOBACK
ec o v
oy si
Notas:
pr lu
___________________________________________________________________
246 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
PROGA.
.T ció
PROGB.
.
PROGC.
C
.F a
PROGD1.
C rm PROGD2.
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 247
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
Cada programa incluido se coloca en el programa que lo incluye justo
.T ció
antes de la sentencia END PROGRAM
Todos deben finalizar con END PROGRAM
.
Sólo el externo puede tener una CONFIGURATION SECTION
C
Un programa interno sólo puede ser invocado por el que lo incluye a
.F a
menos que sea de tipo COMMON
C rm IDENTIFICATION DIVISION.
PROGRAM-ID. PROGA.
PROCEDURE DIVISION.
...
IDENTIFICATION DIVISION.
PROGRAM-ID. PROGB.
to fo
PROCEDURE DIVISION.
...
END PROGRAM PROGB.
END PROGRAM PROGA.
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
248 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Programas COMMON
IDENTIFICATION DIVISION.
PROGRAM PROGD2 IS COMMON.
.I. n
PROGA.
.T ció
PROGB.
.
PROGC.
C
.F a
PROGD1.
C rm PROGD2 IS COMMON.
to fo
ec o v
oy si
Notas:
pr lu
Con COMMON se indica que el programa puede ser llamado por los antecesores del
programa que lo contiene y los programas contenidos en ellos. En el ejemplo: PROGD2
puede ser llamado por todos
c
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 249
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Datos GLOBAL
.I. n
La cláusula GLOBAL indica que esta variable está disponible para
todos los programas incluidos en el programa que la define salvo que
.T ció
dicho programa tenga una variable definida con el mismo nombre.
Los nombres de variables subordinadas a ésta, así como nombres de
condición o indices también son globales
.
Esta cláusula pude indicarse en la W orking-Storage Section, la File
C
Section, la Linkage Section, pero sólo en entrada de datos de tipo 01
.F a
o FD
C rm
Una variable puede tener las clausulas GLOBAL y EXTERNAL
GLOBAL sólo es válido en programas anidados
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
250 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de GLOBAL
IDENTIFICATION DIVISION.
PROGRAM-ID. MODULO1.
...
.I. n
DATA DIVISION.
WORKING-STORAGE SECTION.
.T ció
01 SHAREDATA PIC X(32) GLOBAL.
PROCEDURE DIVISION.
MOVE "INICIO DE CONTENIDO" TO SHAREDATA
CALL "MODULO2"
.
DISPLAY SHAREDATA Salida:
C
STOP RUN.
EMPIEZA EL MODULO2
.F a
IDENTIFICATION DIVISION.
PROGRAM-ID MODULO2. INICIO DE CONTENIDO
DATA DIVISION. ACABA EL MODULO2
C rm
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
DISPLAY "EMPIEZA EL MODULO2"
DISPLAY SHAREDATA
MOVE "FINAL DE CONTENIDO" TO SHAREDATA
FINAL DE CONTENIDO
to fo
DISPLAY "ACABA EL MODULO2"
EXIT PROGRAM.
END PROGRAM MODULO2.
END PROGRAM MODULO1.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 251
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Datos EXTERNAL
Los programas compilados por separado pueden compartir los datos
definiendolos con la cláusula EXTERNAL
.I. n
Sólo se admite EXTERNAL en niveles 01 de la
W ORKING-STORAGE y en las descripciones de las FD de la FILE
.T ció
SECTION
Cualquier programa de la unidad de ejecución con el mismo
.
identificador y con la opción EXTERNAL comparte el contenido
C
La memoria la adquiere el primer programa de la unidad de
.F a
ejecución
C rm
No puede usarse el mismo nombre definido como EXTERNAL por
otra variable del programa
No puede utilizarse la cláusula VALUE
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
252 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Ejemplo de EXTERNAL
IDENTIFICATION DIVISION.
PROGRAM-ID. MODULO1.
.I. n
WORKING-STORAGE SECTION.
01 SHAREDATA PIC X(32) EXTERNAL.
PROCEDURE DIVISION.
.T ció
MOVE "INICIO DE CONTENIDO" TO SHAREDATA
CALL "MODULO2"
DISPLAY SHAREDATA
STOP RUN. Salida:
.
END PROGRAM MODULO1.
EMPIEZA EL MODULO2
C
IDENTIFICATION DIVISION.
.F a
PROGRAM-ID MODULO2. INICIO DE CONTENIDO
ENVIRONMENT DIVISION. ACABA EL MODULO2
DATA DIVISION.
C rm
WORKING-STORAGE SECTION.
01 SHAREDATA PIC X(32) EXTERNAL.
PROCEDURE DIVISION.
DISPLAY "EMPIEZA EL MODULO2"
DISPLAY SHAREDATA
FINAL DE CONTENIDO
to fo
MOVE "FINAL DE CONTENIDO" TO SHAREDATA
DISPLAY "ACABA EL MODULO2"
EXIT PROGRAM.
END PROGRAM MODULO2.
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 253
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
254 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Objetivos
.I. n
Objetivos
.T ció
.
Conceptos y sintáxis de las funciones del COBOL
C
Funciones de fecha y hora
.F a
Funciones de manejo de series
C rm
Funciones aritméticas, matemáticas y de negocio
Funciones que admiten el parámetro ALL
to fo
ec o v
oy si
pr luc
Notas:
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 257
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Funciones
Funciones
.I. n
Permiten acceder a ciertos valores que se producen en tiempo de
.T ció
ejecución
Ejemplos:
.
Current-date
C
Length
.F a
Lower-case
Date-of-integer
C rm
Forman parte de una instrucción en la Procedure Division
FUNCTION es una palabra reservada
to fo
ec o v
oy si
pr lu
Notas:
La palabra FUNCTION es una palabra reservada pero no lo son los nombres de las
c
distintas funciones.
Ex
___________________________________________________________________
258 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Funciones - Sintáxis
Indicar "FUNCTION" seguido del nombre de la función
.I. n
No pueden utilizarse como receptoras
Ejemplos:
.T ció
.
C
move function current-date to d-string
.F a
C rm if function date-of-integer(base-date) ...
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 259
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
El número y formato de los argumentos depende de cada función
El resultado es una variable elemental definida de forma implícita por
.T ció
el COBOL
Las funciones numéricas y enteras sólo pueden utilizarse donde se
admiten expresiones aritméticas
.
Si el resultado de la función es una serie de caracteres
C
(alfanuméricos), la referencia debe ir seguida de una modificación de
.F a
referencia
Notas:
pr luc
Ex
___________________________________________________________________
260 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Funciones de fecha
Funciones de fecha
.I. n
.T ció
Range: 1 enero 1601 a 31 diciembre 9999
Gregorian Date: YYYYMMDD
.
Integer Date: 1 a 3.067.671 (dias desde el 31 Diciembre 1600)
C
.F a
Julian Date: YYYYDDD
C rm
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 261
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
CURRENT-DATE
.I. n
MOVE FUNCTION CURRENT-DATE(1:8) TO DATE-ON-FILE
.T ció
Devuelve una serie de caracteres de longitud 21
YYYYMMDDHHmmsshhShhmm
.
C
.F a
Fecha
Hora (en formato 24 horas)
C rm Diferencia a GMT
to fo
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
262 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
INTEGER-OF-DATE
.I. n
gregoriano:
.T ció
número de dias desde el 31 Diciembre de 1600
El entero puede utilizarse en aritmética de fechas o en
comparaciones
.
C
.F a
C rm
COMPUTE INT-DATE = FUNCTION INTEGER-OF-DATE(DATE-ON-FILE)
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 263
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATE-OF-INTEGER
Devuelve una fecha en formato gregoriano a partir de un entero que
.I. n
represente una fecha
.T ció
De acuerdo con el número de días desde el 31 de diciembre de
1600
El entero puede haber sido la salida de una función y modificado
.
C
.F a
COMPUTE RPT-DATE = FUNCTION DATE-OF-INTEGER(INT-DATE)
Notas:
pr luc
Ex
___________________________________________________________________
264 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
INTEGER-OF-DAY
.I. n
Número de dias desde 31 diciembre 1600
.T ció
El resultado puede utilizarse en comparaciones o en
aritmética de fechas
.
C
.F a
COMPUTE INT-DATE = FUNCTION INTEGER-OF-DAY(JUL-DATE)
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 265
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DAY-OF-INTEGER
.I. n
De acuerdo con los dias transcurridos desde el 31 de diciembre de
.T ció
1600
El entero puede ser resultado de una función gregoriana de fecha
.
C
.F a
COMPUTE JUL-DATE = FUNCTION DAY-OF-INTEGER(INT-DATE)
Notas:
pr luc
Ex
___________________________________________________________________
266 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Otras funciones
Funciones de fecha:
.I. n
DATE-TO-YYYYMMDD
DAY-TO-YYYYDDD
.T ció
YEAR-TO-YYYY
.
(yymmdd, yyddd, or yy)
C
.F a
El segundo argumento, que es opcional, es un número entero que
permite la conversión del año del formato AA a AAAA. El valor por
C rm
omisión es 50
El valor que devuelven es una fecha con el año con cuatro
posiciones
to fo
ec o v
oy si
Notas:
pr lu
9 1923-2022
y Para valores de año entre 00 y el valor de los dos últimos dígitos del año de final ,
se asume la centuria de este año y, para el resto, la del año de inicio
9 En el ejemplo los rangos son 00-22 y 23-99. Dado el año 82 se asignaria el
1982 y, si el año fuese el 21 se asumiria el 2021.
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 267
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DATE-TO-YYYYMMDD
Syntaxis:
.I. n
FUNCTION DATE-TO-YYYYMMDD (YYMMDD [SW ])
Ejemplos:
.T ció
COMPUTE FUNCTION DATE-TO-YYYYMMDD (IN-HIRE-DATE) TO OUT-HIRE-DATE
.
Ejemplos con valores:
C
.F a
Año activo Valor inicial Valor de SW Resultado
1998 890315 -10 18890315
C rm 1998
1998
1998
1998
1998
770122
890315
770122
890315
770122
-10
-1
-1
0
0
19770122
19890315
19770122
19890315
19770122
to fo
1998 890315 85 19890315
1998 770315 85 20770315
1998 890315 -120
1998 890315 120
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
268 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
DAY-TO-YYYYDDD
Sintáxis:
.I. n
FUNCTION DAY-TO-YYYYDDD (YYDDD [SW ])
Ejemplos:
.T ció
COMPUTE FUNCTION DAY-TO-YYYYDDD (IST-LOGON-DAY) TO OUT-LOGON-DAY
.
Ejemplos con valores:
C
.F a
Año activo Valor inicial Valor SW Resultado
1998 89315 -10 1889315
1998 77122 -10 1977122
C rm 1998
1998
1998
1998
1998
89315
77122
89315
77122
89315
-1
-1
0
0
85
1989315
1977122
1989315
1977122
1989315
to fo
1998 77315 85 2077315
1998 89315 -120
1998 89315 120
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 269
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
YEAR-TO-YYYY
Sintáxis:
.I. n
FUNCTION YEAR-TO-YYYY (YY [SW ])
Ejemplos:
.T ció
MOVE FUNCTION YEAR-TO-YYYY (START-YEAR) TO OUT-START-YEAR
.
Ejemplos con valores:
C
.F a
Año activo Valor inicial Valor SW Resultado
1998 89 -10 1889
C rm 1998
1998
1998
1998
1998
77
89
77
89
77
-10
-1
-1
0
0
1977
1989
1977
1989
1977
to fo
1998 89 85 1989
1998 77 85 2077
1998 89 -120
1998 89 120
ec o v
oy si
Notas:
pr luc
Ex
___________________________________________________________________
270 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Anidamiento de funciones
.I. n
COMPUTE NEW -DUE-DATE =
FUNCTION DATE-OF-INTEGER (
.T ció
FUNCTION INTEGER-OF-DATE (DATE-OF-ORDER) + 30)
.
Si el valor de DATE-OF-ORDER es 19960317, entonces:
C
.F a
FUNCTION INTEGER-OF-DATE(DATE-OF-ORDER) + 30
es igual a 144337 + 30 = 144367
C rm
FUNCTION DATE-OF-INTEGER(144367)
nos da NEW -DUE-DATE con el valor 19960416
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 271
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Funciones de series
LENGTH
.I. n
Devuelve un entero de nueve posiciones que indica el número
.T ció
de octetos que ocupa el argumento en memoria
.
similares. Sin embargo la función LENGTH puede admite
C
literales
.F a
C rm MOVE IN-REC(1:FUNCTION LENGTH(OUT-AREA)) TO OUT-AREA
to fo
Si la longitud de OUT-AREA es 10, sólo se mueven las posiciones 1 a 10 de
IN-REC a OUT-AREA
ec o v
oy si
pr lu
Notas:
c
Ex
___________________________________________________________________
272 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
LOWER-CASE y UPPER-CASE
Devuelve una serie transformada a mayúsculas o minúsculas
.I. n
Deben ser variables de la misma longitud
Muy útil al comparar dos series
.T ció
.
MOVE FUNCTION UPPER-CASE(ANSW ER) TO UPPER-ANSW ER
C
.F a
Si ANSW ER contiene 'y' entonces UPPER-ANSW ER contendrá 'Y'
C rm
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 273
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
REVERSE
.I. n
argumento pero en orden inverso
.T ció
puede utilizarse para ver el primer carácter distinto de blanco
Para escritura de derecha a izquierda
.
C
.F a
IF FUNCTION REVERSE(ASTRING) = ASTRING
PERFORM ES-UN-PALINDROME
Notas:
pr luc
Ex
___________________________________________________________________
274 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
CHAR y ORD
CHAR(n) devuelve el carácter enésimo
.I. n
ORD(char) devuelve la posición que ocupa este carácter en la
secuencia alfabética
.T ció
se utiliza cuando no se conoce, en tiempo de compilación, si se
trabaja en ASCII o EBCDIC
.
C
.F a
IF FUNCTION ORD('1') < FUNCTION ORD('A')
C rm PERFORM FOUND-ASCII
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 275
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Otras funciones
WHEN-COMPILED
.I. n
Devuelve la fecha que se puso en el momento de la
.T ció
compilación
.
C
.F a
C rmIF DISASTER
MOVE FUNCTION W HEN-COMPILED TO ERROR1
Notas:
c
Ex
___________________________________________________________________
276 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Otras funciones
Trigonométricas y logarítmicas
.I. n
ACOS, ASIN, ATAN, COS, LOG, LOG10, SIN, TAN
.T ció
Estadísticas y matemáticas
.
MAX, ORD-MAX, ORD-MIN, RANDOM, RANGE, REM, SQRT, SUM
C
.F a
De conversión
C rm NUMVAL, NUMVAL-C
Inversión / depreciación
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 277
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
Parámetro ALL
.I. n
Si la función puede llevar un número variable de argumentos, se
.T ció
puede dar el nombre de una tabla como uno de ellos
.
uno o mas subíndices
C
.F a
C rm COMPUTE TOTAL-IN = FUNCTION SUM(STORE-SALES(ALL))
Notas:
c
Ex
___________________________________________________________________
278 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
MAX MIN
ORD-MAX ORD-MIN
.
MEAN MEDIAN
C
.F a
MIDRANGE PRESENT-VALUE
RANGE STANDARD-DEVIATION
C rm SUM VARIANCE
to fo
ec o v
oy si
Notas:
pr luc
Ex
_________________________________________________________________________________________
© Copyright IBM Corp. 2002 279
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
Material del Alumno
___________________________________________________________________________
.I. n
.T ció
.
C
.F a
C rm
to fo
ec o v
oy si
pr luc
Ex
___________________________________________________________________
280 © Copyright IBM Corp. 2002
El material de los cursos no puede reproducirse ni total ni
parcialmente sin el permiso escrito de IBM
CONTACTO
Teléfono
91 761 21 78
Póngase en contacto con nuestro equipo y le
informaremos de cualquier duda o cuestión
que pueda surgirle.
Email
formacion@arrowecs.es
Mándenos un email y le atenderemos
enseguida.
Online
@Arrow_Edu_ES
O bien puede contactarnos a través de
nuestro perfil en Twitter.
Visítenos
Arrow ECS Education Services
Avenida de Europa 21,
Parque Empresarial La Moraleja
28108 Alcobendas, Madrid
EDUCATION
S E R V I C E S