You are on page 1of 67

COBOL

COBOL

Aliatis
Parque Empresarial Los Llanos
Avda.Salteras, parc. 157, buzn 6
41909 Salteras (Sevilla)

AUTOR:

Alejandro Martnez Mez

AO DE EDICIN:

2004

Todas las marcas son registradas por sus respectivos propietarios.

Indice

INTRODUCCIN COBOL .................................................................................. 7

CARACTERSTICAS DE LA PROGRAMACIN EN COBOL. ......................... 7


ESTRUCTURA DE UN PROGRAMA COBOL............................................... 9
Identification Division..................................................................... 9
Environment Division...................................................................... 9
Data Division. ............................................................................... 10
Procedure Division. ...................................................................... 12
VARIABLES ......................................................................................... 13
Tipos de Datos: ............................................................................. 13
Almacenamiento Interno de Datos Numricos:............................. 14
SENTENCIAS MS COMUNES................................................................ 16
Asignacin de valores a variables................................................. 16
Operaciones Aritmticas. .............................................................. 16
Instrucciones de Organizacin y Control...................................... 16

PROGRAMAS ESTRUCTURADOS .................................................................19

ORGANIZACIN DE LA WORKING-STORAGE SECTION......................... 20


Uso de COPYs.............................................................................. 20
Uso de REDEFINE........................................................................ 21
Nombres de condicin. Nivel 88. ................................................... 21

ORGANIZACIN DE LA PROCEDURE DIVISION. .................................... 21

Tratamiento de Ficheros................................................................ 23

COMUNICACIN ENTRE PROGRAMAS. ................................................. 23

TABLAS DE MEMORIA.......................................................................... 24

TRATAMIENTO DE ERRORES................................................................ 26

SENTENCIAS ESPECIALES COBOL .............................................................27

INITIALIZE ....................................................................................... 27
INSPECT............................................................................................ 27
STRING ............................................................................................. 28
UNSTRING........................................................................................ 28
ACCEPT............................................................................................. 29

INCLUSIN Y MANEJO DE SENTENCIAS DB2.............................................31

SENTENCIAS SQL................................................................................ 31
Seleccin........................................................................................ 32
Insercin. ....................................................................................... 32
Modificacin.................................................................................. 32
Borrado.......................................................................................... 32
SQL EMBEBIDO EN PROGRAMAS COBOL. .......................................... 33
Seleccin........................................................................................ 33
Insercin. ....................................................................................... 33
Modificacin.................................................................................. 34
Borrado.......................................................................................... 34
Declaracin de cursor. .................................................................. 34
Apertura de cursor......................................................................... 35
Fetch del cursor............................................................................. 35
Modificacin de un registro del cursor. ........................................ 35
Cierre del cursor. .......................................................................... 36
Control de errores SQL. ................................................................ 36

INTRODUCCIN IBM TSO .............................................................................. 37

DESPLAZAMIENTO POR LOS MENUS..................................................... 37


EDICIN DE FICHEROS......................................................................... 39

Comandos generales ..................................................................... 41

Comandos de lnea:....................................................................... 41

UTILITIES ............................................................................................ 43

ANEXO:
CODIGOS DE ERROR ..................................................................................... 47

FILE STATUS. ...................................................................................... 48


SQL CODE.......................................................................................... 49

Introduccin COBOL

Caractersticas de la programacin en Cobol.

COBOL: Common Business Oriented Language.


Es un lenguaje orientado a resolver los problemas normales de
negocio: mantenimiento de ficheros secuenciales o indexados,
mantenimiento de bases de datos, obtencin de informes, etc.
La sintaxis de sus instrucciones es similar al lenguaje normal: verbos,
instrucciones.

Aliatis

No soporta clculos cientficos, o trigonomtricos, pero s las funciones


de clculo decimal que se utilizan normalmente en procesos de
negocio.
Tambin ofrece soluciones para tratamiento de cadenas de caracteres
y datos de tipo carcter.
Los programas cobol deben estar codificados en 80 columnas (las 80
columnas forman una lnea del programa).
1 - 6:

n de secuencia. (lo introduce el editor).

7:

comentarios (*) o bien lnea de continuacin (-) en


declaracin de variables (literales).

8 - 11:

rea A. aqu es donde se escriben los nombres de las


divisiones, de las secciones, de los prrafos, los
indicadores de FD (File Description) y los niveles de
variables 01 y 77 (elementales).

12 - 72:

rea B. En ella se incluirn todas las instrucciones del


programa, las lneas de las secciones y los niveles de
variables mayores a 01.

73 - 80:

rea de identificacin. No se utiliza y por lo tanto es


ignorada por el compilador

rea A: deben empezar todas las declaraciones de Divisiones,


Secciones, Prrafos.

Aliatis

Estructura de un programa Cobol.

Un programa Cobol se divide en 4 zonas o Divisiones.


Cada Divisin tiene una funcin especfica dentro de la estructura del
programa.
A su vez, cada Divisin se puede dividir en Secciones, y dentro de ellas
puede haber varios prrafos. Por ltimo dentro de cada prrafo puede
haber instrucciones.

Identification Division.

Informacin General del Programa.


Nombre del Programa: PROGRAM-ID.
Fecha de creacin y compilacin, nombre del programador, etc.
No se divide en secciones.
IDENTIFICATION DIVISION.
PROGRAM-ID. MANCLI.
AUTHOR. ANDRES MONTES.
INSTALLATION. WWW.
REMARKS. Programa mantenimiento de fichero de clientes.

Environment Division.

Informacin del Hardware y Ficheros de Datos que se van a procesar.


Tiene 2 secciones:
Configuration Section: contiene los nombres de los ordenadores donde
se van a compilar y procesar los programas.

Aliatis

Input-Ouput Section: Dispositivos perifricos que se van a utilizar:


discos, cintas, impresoras, etc. y adems asocia estos dispositivos con
los ficheros.
Contiene el prrafo File-Control que es obligatorio cuando se van a
procesar ficheros en el programa: describe nombre fichero,
organizacin (secuencial, indexado, etc.) y modo de acceso.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. RMCOBOL.
OBJECT-COMPUTER. RMCOBOL.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CLIENTES ASSIGN TO RANDOM "C:\DATOS\CLIENTES.DAT"
ORGANIZATION INDEXED
ACCESS DYNAMIC RECORD KEY KEY-CLI ALTERNATE RECORD KEY-CLI1
FILE STATUS STACLI.
SELECT IMPRESORA ASSIGN TO PRINT "PRINTER".

Data Division.

Se definen todas las reas de datos o memoria que va a utilizar el


programa. Tiene dos secciones:
File Section: se define el formato y las caractersticas de los registros
de los ficheros.
Working-Storage Section: se definen todas las variables que se van a
necesitar: Switches, contadores, acumuladores, tablas, etc.
Linkage Section: Se describe el rea de comunicaciones con otros
programas.

10

Aliatis

DATA DIVISION.
FILE SECTION.
FD
CLIENTES BLOCK CONTAINS 4 RECORDS
RECORD CONTAINS 128 CHARACTERS
LABEL RECORD STANDARD.
01
REG-CLIENTE.
02
KEY-CLI.
03
CLICOD
PIC 9(4) COMP-6.
02
CLINOM
PIC X(30).
02
CLIDIR
PIC X(30).
02
CLIPOB
PIC X(20).
02
CLIPRO
PIC X(20).
02
CLINIF
PIC X(9).
02
FILLER
PIC X(17).
FD
IMPRESORA
LABEL RECORD OMITTED.
01
LINEA PIC X(132).
WORKING-STORAGE SECTION.
01 TABLA.
02 FILLER PIC X(12) VALUE "LUNMARMIEJUE" .
02 FILLER PIC X(9) VALUE "VIESABDOM" .
01 TABLAIDA REDEFINES TABLA.
02 ELEDIA PIC XXX OCCURS 7 TIMES.
01
FECHA PIC 9(8).
01
IMPORTE PIC S9(8)V99.
01
VALORES.
02 UNO PIC 99 VALUE 0.
02 DOS PIC 9(6)
02 TRES PIC 9(4)V99.
01 LINPA.
02 LIMPOR PIC ZZ.ZZZ.ZZZ,ZZ-.
LINKAGE SECTION.
01 DATOS-RECIBIDOS.
03 MOVTOS290
03 RETORNO

PIC X(290).
PIC X.

Aliatis

11

Procedure Division.

Contiene todas las instrucciones del programa, las lecturas de fichero,


los clculos, las escrituras.
PROCEDURE DIVISION.
PERFORM 10000-INICIO-PROGRAMA
PERFORM 20000-PROCESO-PROGRAMA
PERFORM 30000-FIN-PROGRAMA.
10000-INICIO-PROGRAMA.
INITIALIZE

...

12

Aliatis

WEN-VBLES-ESQ
WEA-VBLES-ESQ
WSN-VARIABLES
WSA-VARIABLES

Variables

Cada variable en Cobol debe tener asociado un Nivel.


El Nivel 01 es el principal y define un campo simple, o bien un campo
compuesto de otros campos de niveles superiores.
Como casos particulares estn los niveles 77 (campos elementales que
no forman parte de otro campo) y 88 (nombres de condicin).

Tipos de Datos:

Datos Alfanumricos

Se definen con Picture X.


01

WK-TITULO

PIC

X(19)

VALUE CURSO DE COBOL 2004.

PIC

X(19)

JUST RIGHT.

Justificado a la izq.
01

WK-TITULO

Justificado a la derecha.

Datos Numricos

Se definen con Picture 9 (con/sin signo).


01 NUMERO
01 NUMERO2

PIC 9(7).
PIC S9(5)V9 VALUE +12,4.

El signo no ocupa memoria. Se almacena en hexadecimal a razn de


byte por dgito de esta forma:

Aliatis

13

F0 F0 F0 F1 F2 C4
La C indica que es positivo, D negativo y F sin signo.

Datos Alfabticos

definen con Picture A.


01

WK-TITULO

PIC

A(14)

VALUE CURSO DE COBOL.

Almacenamiento Interno de Datos Numricos:

USAGE DISPLAY

Es la clusula por Defecto. Cada dgito ocupa un byte. Ej 9(5), 999V99,


S9(3).
01

VAR

PIC

S9(3)V99

VALUE +100.

5 bytes en memoria: F1 F0 F0 F0 C0
1

0 +0

USAGE COMP-3

Decimal empaquetado. Se almacenan 2 caracteres por Byte.


01

VAR

PIC

S9(3)V99

COMP-3 VALUE 123,45.

3 bytes en memoria: 12 34 5C
Para calcular el nmero de bytes que ocupa se divide el nmero de
dgitos por 2 y se suma 1.
Ms eficiente en los clculos.

14

Aliatis

USAGE COMP

Almacenamiento Binario. Se utiliza sobre todo para valores numricos


generados por el sistema, ndices internos de tablas.
01

CODIGO

PIC

S9(3)

COMP.

Almacenamiento en memoria:
1-4 dgitos:

2 bytes.

5-9 dgitos:

4 bytes.

10-18 dgitos:

8 bytes.

Los negativos se almacenan como Complemento A2.

Aliatis

15

Sentencias ms comunes.

Asignacin de valores a variables.

MOVE valor/variable-orig
INITIALIZE variable.

TO

variable-dest.

Operaciones Aritmticas.

ADD/SUBTRACT/DIVIDE/MULTIPLY

ADD valor/variable TO variable-dest [GIVING var3].


SUBTRACT valor/variable FROM variable-dest [GIVING var3].
DIVIDE valor/variable INTO variable-dest [GIVING var3]
[REMAINDER cariable-resto].
MULTIPLY valor/variable BY variable-dest [GIVING var3].

COMPUTE

COMPUTE
variable-dest = variable-dest

+ valor/var

Instrucciones de Organizacin y Control

Permiten variar el orden de ejecucin secuencial de las intrucciones,


pudindose transferir el control a cualquier parte del programa.

IF

IF condicin accin/es.

16

Aliatis

IF condicin
accin/es
ELSE
accin/es
END-IF

PERFORM

Es la instruccin bsica del Cobol.


Vara el orden secuencial de instrucciones provocando un salto con
retorno.
Se invoca a un conjunto de instrucciones, uno o varios prrafos que se
ejecutan
tantas
veces
como
se
considere
oportuno.
Despus de la ejecucin de estas sentencias, el programa continua a
partir de la instruccin posterior al Perform.
NUM-PARRAFO.
Instrucciones del prrafo.
NUM-PARRAFO-EXIT.
EXIT
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT.
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT
repeticiones TIMES.
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT
UNTIL Condicin.

Primero evala la condicin y si se cumple se ejecuta el prrafo hasta


que la condicin deje de cumplirse (do while).

Aliatis

17

PERFORM
Instrucciones
UNTIL Condicin.
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT
WITH TEST AFTER
UNTIL Condicin.

Primero se ejecuta el prrafo y luego vala la condicin. El bucle


finaliza cuando deje de cumplirse (do until).
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT
VARYING indice FROM campo1 BY incremento
UNTIL Condicin.

EVALUATE

Permite la implementacin de alternativas mltiples.


Evita la codificacin de IF anidados menos legibles.
EVALUATE variable1 ALSO variable2
WHEN valor1 ALSO valor2
instrucciones
WHEN valor3 ALSO valor4
instrucciones
WHEN OTHER
instrucciones
END-EVALUATE.
EVALUATE TRUE
WHEN condicin
instrucciones
END-EVALUATE.

18

Aliatis

Programas
Estructurados

En la programacin en general y en el COBOL en particular, un


programa bien hecho no es solo el que funciona, sino que adems se le
tiene que exigir que sea legible, comprensible, fcilmente modificable, y
que sigan unas normas o costumbres que pueden variar dependiendo
de la empresa.

Aliatis

19

Organizacin de la Working-Storage Section.

Los nombres de las variables numricas incluirn el prefijo WSN-.


Los nombres de las variables alfanumricas incluirn el prefijo WSA-.
Los nombres de las constantes (variables que no se modificarn
durante el programa) incluirn el prefijo WSK-.
Las variables numricas, alfanumricas y constantes se definirn por
grupos. Se crearan las variables compuestas WSN-VARIABLESNUMERICAS,
WSA-VARIABLES-ALFANUMERICAS
y
WSKCONSTANTES y dentro se definirn todas las variables elementales.
Tambin se recomienda el uso de los siguientes elementos:

Uso de COPYs.

Son porciones de cdigo que se utilizan en varios programas y que se


insertan en tiempo de compilacin.
COPY miembro.

Se ahorra tiempo de codificacin ya que solo es necesario escribir una


vez las sentencias o definiciones.
Se facilitan las modificaciones ya que para cambiar un grupo de
sentencias o una estructura de fichero solo se tiene que modificar la
Copy y recompilar los programas que la use.

20

Aliatis

Uso de REDEFINE.

Una variable redefine a otra variable. Se est reservando una nica


zona de memoria. Segn nos interese accedemos con una u otra
variable.
01
01

NOMAPE
PIC X(20).
NOMAPE-RED REDEFINES NOMAPE.
10 NOMBRE
PIC X(10).
10 APELLID PIC X(10).

Nombres de condicin. Nivel 88.

Facilitan le legibilidad del cdigo.


05 SW-PETICION
PIC 9(5)
88 PETICION-CONSULTAR-1
88 PETICION-CONSULTAR-2
88 PETICION-CONSULTAR-3
88 PETICION-ENCONTRADA
88 PETICION-INSERTAR
88 PETICION-MODIFICAR
88 PETICION-BORRAR-FISICO

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

ZEROS.
00136.
00137.
00139.
00136 00137 00139.
00138.
00140.
00141.

Organizacin de la Procedure Division.

Los prrafos tendrn como prefijo un nmero que identifiquen de alguna


forma a que parte del programa pertenecen.
Un programa estructurado tiene un prrafo 1000-INICIO, un prrafo
3000-PROCESO y otro 5000-FIN.

Aliatis

21

Por convenio, cada instruccin PERFORM tendr la clusula THRU. Se


llamar al prrafo deseado y a otro prrafo que solo tiene la sentencia
EXIT.
PERFORM NUM-PARRAFO
THRU NUM-PARRAFO-EXIT.
NUM-PARRAFO.
Instrucciones del prrafo.
NUM-PARRAFO-EXIT.
EXIT

El tronco del programa ser este:


PERFORM 1000-INICIO
THRU 1000-INICIO-EXIT.
PERFORM 3000-PROCESO
THRU 3000-PROCESO-EXIT
UNTIL Condicin.
PERFORM 5000-FIN
THRU 5000-FIN-EXIT.

En 1000-INICIO se inicializarn las variables, se abrirn los ficheros, los


cursores y se har la primera lectura del fichero (o lo que marque la
duracin del programa).
En 3000-PROCESO se tratar el registro ledo despus se repetir la
lectura del fichero.
En 5000-FIN se cerrar los ficheros, los cursores y se harn todas
aquellas tareas no repetitivas que finalicen el proceso.
Los prrafos que se llamen desde los anteriores se numerarn 1100-,
1200- si se llaman desde 1000-INICIO, 3100-, 3200- si se llaman desde
3000-PROCESO, etc.

22

Aliatis

Tratamiento de Ficheros.

Operaciones permitidas:
OPEN, CLOSE, READ, WRITE, REWRITE, DELETE, START.
FILE STATUS IS Variable (alfanumrico de dos caracteres)
OPEN INPUT/OUTPUT/I-O/EXTEND Fichero
CLOSE Fichero

Secuenciales.

READ Fichero (NEXT/PREVIOUS RECORD) INTO w-reg-fichero


AT END Instruccin.
WRITE

reg-fichero-FD FROM w-reg-fichero.

(Data Division, File Section, FD)


Es importante chequear el estado de la FILE STATUS.

Indexados.

START nombre de fichero KEY (expresin) nombre de clave


(INVALID KEY/NOT INVALID KEY sentencia)
READ nombre de archivo (INTO descripcin) (KEY nombre de
clave) (INVALID KEY/NOT INVALID KEY sentencia)

Comunicacin entre Programas.

El programa llamante invoca a la rutina mediante la instruccin:

Aliatis

23

CALL nombre-rutina USING ident1, ... , identN.

Las rutinas se codifican de forma diferente a los programas:


En la Data Division deben tener la LINKAGE-SECTION: es donde se
definen las variables del rea de comunicacin con el programa
invocante.
PROCEDURE DIVISION USING ident1,,identN.

Final de ejecucin de la rutina:


GOBACK.

Tablas de memoria.

Se definen mediante la utilizacin de la clusula OCCURS.


Se asigna un nombre comn a varios campos contiguos
La clusula OCCURS no se permite a nivel 01.
Definicin
01 TABLA.
05 FILAS OCCURS 100 PIC X(13).
01 TABLA.
05 FILAS OCCURS 100.
10 CAMPO1 PIC X(10).
10 CAMPO2 PIC 9(3).
Move Tabla to Variable.
Move Filas(1) to Variable.
Move campo1(1) to Variable.

24

Aliatis

Tablas multidimensionales

01 TABLA-BIDIMENSIONAL.
05 MES OCCURS 12.
10 SEMANA OCCURS 4 PIC X(1).
Move S TO SEMANA(10, 3).

Tablas indexadas

01 TAB-EMPRE.
05 EMPRESAS-REG OCCURS 100 TIMES
ASCENDING KEY IS CODEMPR
INDEXED BY INDICE.
10 CODEMPR PIC S9(5)V COMP-3.
10 DIRECCIO PIC X(10).

El ndice no hay que declararlo en Working.


SET INDICE TO 1.
SET INDICE UP BY 1.

Si se busca con la opcin ALL la tabla debe estar indexada y ordenada.


SET INDICE TO 1.
SEARCH ALL FILAS
AT END
instrucciones
WHEN
condicin instrucciones
END-SEARCH.

Aliatis

25

Tratamiento de Errores.

Se codificar un nico prrafo de tratamiento de errores. O si se


prefiere un prrafo para los errores de tratamientos de ficheros y
validaciones en general y otro para los errores de acceso a DB2.
Tambin se puede crear una rutina para que la puedan llamar todos los
programas del proyecto que estemos desarrollando.
Antes de llamar a este prrafo se informar una serie de variables para
indicar QUE tipo de fallo se ha producido (si el prrafo no puede
averiguarlo por si solo) y DONDE se ha producido.
Por ejemplo, se suele tener una variable WSA-PARRAFO donde se
introduce el prrafo donde se ha producido el error. De este modo se
puede averiguar fcilmente el origen del fallo.
SELECT FICHERO ASSIGN TO
FILE STATUS IS
02

FS-MASAUTOR
88
88
88

F-FICHERO
FS-FICHERO.

PIC XX.
OPERACIN-OK
VALUE 00.
FIN-ARCHIVO
VALUE 10.
ARCHIVO-NO-ABIERTO
VALUE 91.

3200-LECTURA-FICHERO.
IF ARCHIVO-NO-ABIERTO
MOVE '3200- LECTURA-FICHERO' TO WSA-ULT-PARRAFO
PERFORM 5500-TRATAR-ERROR
END-IF

...
.

26

Aliatis

Sentencias
Especiales COBOL

INITIALIZE

Los campos numricos se inicializan a con ceros y los alfanumericos


con blancos.
INITIALIZE campo1 [, campo2, ...]
[REPLACING NUMERIC/ALPHANUMERIC DATA BY campo3

INSPECT

Busca, cuenta, sustituye y convierte caracteres.


INSPECT cadena TALLYING contador FOR CHARACTERS
[BEFORE/AFTER INIITAL literal/campo]
INSPECT
cadena
TALLYING
contador
FOR
ALL/LEADING
literal/campo
[BEFORE/AFTER INIITAL literal/campo]

Aliatis

27

INSPECT cadena REPLACING CHARACTERS BY


[BEFORE/AFTER INIITAL literal/campo]
INSPECT cadena REPLACING ALL/LEADING/FIRST literaL BY
[BEFORE/AFTER INIITAL literal/campo]
INSPECT cadena TALLYING... REPLACING ...
INSPECT cadena
CONVERTING literal/campo TO literal/campo
[BEFORE/AFTER INIITAL literal/campo]

STRING

STRING VARA VARB DELIMITED BY SIZE/CARACTER INTO VARC


STRING "HOY ES " DIA " DE " MES " DE " ANIO
DELIMITED BY SIZE INTO FRASE.

UNSTRING

Separa cadenas.
UNSTRING CAMPO-ORIGEN DELIMITED BY DELIM1 OR DELIM2
INTO
CAMPO-FINAL-1
CAMPO-FINAL-2
CAMPO-FINAL-3

CAMPO-FINAL-4
01 TEXTO PIC X(30) VALUE "MONTES ROBLES, ANDRES".
UNSTRING TEXTO DELIMITED BY " " OR ", "
INTO APELLI1 APELLI2 NOMBRE.

28

Aliatis

ACCEPT

Facilita la recuperacin de datos a travs de los propios recursos del


sistema.
ACCEPT variable FROM (DATE, DAY, DAY-OF-WEEK, TIME).

Aliatis

29

30

Aliatis

Inclusin y Manejo
de Sentencias DB2

Sentencias SQL.

Las instrucciones en lenguaje S.Q.L. (Structured Query Language)


permiten comunicar peticiones de acceso a datos al DB2. Son usadas
por el administrador de la base de datos para crear y cambiar
definiciones de datos, por el administrador del sistema en cuanto a
autorizaciones a usuarios de los datos, y por el programador de
aplicaciones para recuperar y actualizar datos.

Seleccin.

SELECT campo_1, campo_2,.., campo_n


FROM creador.tabla
WHERE campo_clave_1 = valor_1 AND/OR
campo_clave_2 = valor_2

Insercin.

INSERT INTO creador.tabla


(campo-1, campo-2,.., campo-n)
VALUES valor_1, valor_2,.., valor_n

Modificacin.

UPDATE creador.tabla
SET campo_clave_1 = valor_1,
campo_clave_2 = valor_2
WHERE campo_clave_3 = valor_3 AND/OR
campo_clave_4 = valor_4

Borrado.

DELETE FROM creador.tabla


WHERE campo_clave_1 = valor_1 AND/OR
campo_clave_2 = valor_2

32

Aliatis

SQL embebido en programas COBOL.

Se introducen las sentencias SQL entre las clusulas EXEC SQL y


END-EXEC. Las variables donde se guardan los resultados van
precedidas de :,

Seleccin.

EXEC SQL
SELECT campo_1, campo_2,.., campo_n
INTO :campo-1, :campo-2,..,:campo-n
FROM creador.tabla
WHERE campo_clave_1 = campo_clave_1 AND/OR
campo_clave_2 = campo_clave_2
END-EXEC

Si la clusula WHERE permitiera recuperar los valores de las columnas


de dos o mas filas, DB2 devuelve un codigo de error en el SQLCODE (811)y no recupera nada. Si ninguna fila cumple la condicin, DB2
devuelve un +100.

Insercin.

EXEC SQL
INSERT INTO creador.tabla
(campo-1, campo-2,.., campo-n)
VALUES :campo_1, :campo_2,..,:campo_n
END-EXEC

Si el registro a insertar tiene una clave que ya existe en la tabla, se


devuelve el cdigo de error -803.

Aliatis

33

Modificacin.

EXEC SQL
UPDATE creador.tabla
SET campo_clave_1 = campo_clave_1,
campo_clave_2 = campo_clave_2
WHERE campo_clave_1 = campo_clave_1 AND/OR
campo_clave_2 = campo_clave_2
END-EXEC

Borrado.

EXEC SQL
DELETE FROM creador.tabla
WHERE campo_clave_1 = campo_clave_1 AND/OR
campo_clave_2 = campo_clave_2
END-EXEC

Declaracin de cursor.

El cursor permite a un programa recuperar un conjunto de filas, y luego


procesar una fila cada vez.
El DB2 construye una 'tabla de resultados' para guardar todas las filas
recuperadas al ejecutar una instruccin SELECT, y utiliza el cursor para
hacerlas disponibles al programa. Un cursor identifica la fila actual de la
tabla de resultados, que el programa puede recuperar secuencial mente
hasta que alcanza el fin de los datos (SQLCODE).

34

Aliatis

Un programa puede utilizar varios cursores


EXEC SQL
DECLARE CURSOR nombre-cursor
FOR SELECT campo_1, campo_2,..;campo_n
FROM creador.tabla
WHERE campo_clave_1 = campo_clave_1 AND/OR
campo_clave_2 = campo_clave_2
FOR UPDATE OF campo_3
END-EXEC

Apertura de cursor.

EXEC SQL
OPEN CURSOR nombre-cursor
END-EXEC

Fetch del cursor.

EXEC SQL
FETCH CURSOR nombre-cursor
INTO :campo-1, :campo-2, .., :campo-n
END-EXEC

Modificacin de un registro del cursor.

EXEC SQL
UPDATE creador.tabla
SET columna_1 = valor1, columna_2 = valor2
WHERE CURRENT OF nombre_del_cursor
END-EXEC

Aliatis

35

Cierre del cursor.

EXEC SQL
CLOSE CURSOR nombre-cursor
END-EXEC

Control de errores SQL.

03 SW-SQLCODE
88 DB2-OK
88 DB2-NTFND
88 DB2-NULOS
88 DB2-EXISTE
...
MOVE SQLCODE

PIC S9(4) COMP.


VALUE
VALUE
VALUE
VALUE

+0.
+100.
-305.
-803.

TO SW-SQLCODE

IF NOT DB2-OK
IF DB2-NTFND
DISPLAY
'REGISTRO NO ENCONTRADO EN LA TABLA

36

Aliatis

Introduccin IBM TSO

Desplazamiento por los menus.

----------------OPTION ===>

ISPF/PDF PRIMARY OPTION MENU

-----------------

USERID
T932006
0 ISPF PARMS - Specify terminal and user parameters
TIME
- 09:23
1 BROWSE
- Display source data or output listings
TERMINAL - 3278
2 EDIT
- Create or change source data
PF
KEYS - 12
3 UTILITIES
- Perform utility functions
4 FOREGROUND - Invoke language processors in foreground
5 BATCH
- Submit job for language processing
6 COMMAND
- Enter TSO Command, CLIST, or REXX exec
7 DIALOG TEST - Perform dialog testing
8 LM UTILITIES- Perform library administrator utility
functions
9 OTHER
- Other IBM and Non-IBM Products (DMS, TMS,
INFO, etc.)
10 SCLM
- Software Configuration and Library Manager
I IOF
- Interactive Output Facility
C CHANGES
- Display summary of changes for this release
T TUTORIAL
- Display information about ISPF/PDF
X EXIT
- Terminate ISPF using log and list defaults
Enter END command to terminate ISPF.

F1=HELP
F2=SPLIT
F3=END
F4=RETURN
F5=RFIND
F6=RCHANGE
F7=UP
F8=DOWN
F9=SWAP
F10=LEFT
F11=RIGHT
F12=RETRIEVE

Lo que en entorno Windows se realiza con la tecla RETURN aqu se


logra con el CTRL derecho.
La pulsacin RETURN hace como de tabulador, saltando por la pantalla
de una opcin a la siguiente.
La tecla F2 (SPLIT) abre una nueva sesin en la linea del cursor.
La tecla F9 (SWAP) alterna entre una sesin y la anterior.
Con el comando KEYS se puede redefinir todas estas teclas.
El comando START abre una nueva secin a pantalla completa.
El comando SWAP NEXT recorre las sesiones abiertas.
El comando SWAP LIST saca la lista de sesiones abiertas para que el
usuario elija a la que quiere ir.
El comando SCRNAME nombre da un ttulo a la sesin actual para
luego poder identificarla fcilmente.
La tecla F3 sale de la ventana actual hasta cerrar la sesin.
Para subir y bajar en una lista de elementos o en el editos se usa F7
(arriba) y F8 (abajo).
El comando RETRIEVE permite repetir comandos anteriores sin tener
que teclearlos de nuevo.

38

Aliatis

Edicin de ficheros.

Opcin 2.

COMMAND ===>
ISPF LIBRARY:
PROJECT ===> T932006
GROUP
===> TEST2
===>
===>
===>
TYPE
===> TEXT
MEMBER ===>
(Blank or pattern for member
selection list)
OTHER PARTITIONED OR SEQUENTIAL DATA SET:
DATA SET NAME ===>
VOLUME SERIAL ===>
(If not cataloged)
DATA SET PASSWORD ===>
(If password protected)
PROFILE NAME
===>
(Blank defaults to data set
type)
INITIAL MACRO
===>
LMF LOCK
===> YES
(YES, NO
or NEVER)
FORMAT NAME
===>
MIXED MODE ===> NO
(YES or
NO)
F1=HELP
F2=SPLIT
F3=END
F4=RETURN
F5=RFIND
F6=RCHANGE
F7=UP
F8=DOWN
F9=SWAP
F10=LEFT
F11=RIGHT
F12=RETRIEVE

Aliatis

39

Se selecciona un miebro de la lista.

File Edit Edit_Settings Menu Utilities Compilers Test


Help
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
sssssssssssss
VIEW
DESA2.FUENTE.CICS(MFB30030) - 01.81
Columns
00001 00072
Command ===>
Scroll ===> CSR
036500 ESQ
**-------------------------------------------------------------**
036600 ESQ
*
*
036700 ESQ
PROCEDURE DIVISION
USING DFHEIBLK
036800 ESQ
DFHCOMMAREA
036900 ESQ
LK-STTRAERR.
037000 ESQ
*
*
037100 ESQ
**---*****-----*****-----*****-----*****-----*****----*****----**
037200 ESQ
*
NO SE REALIZARAN MODIFICACIONES EN ESTE
PARRAFO
*
037300 ESQ
**---*****-----*****-----*****-----*****-----*****----*****----**
037400 ESQ
037500 ESQ
PERFORM 10000-INICIO-PROGRAMA
037600 ESQ
037700 ESQ
PERFORM 20000-PROCESO-PROGRAMA
037800 ESQ
037900 ESQ
PERFORM 30000-FIN-PROGRAMA.
038000 ESQ
038100 ESQ
COPY MTPP0001.
038200 ESQ
COPY MTPP0003.
038300 ESQ
*
038400 ESQ
**-------------------------------------------------------------**

40

Aliatis

Comandos generales

Se introducen en la lnea COMMAND


FIND Busca cadenas
SAVE Salva el fichero
LIST Salta a una lnea determinada
TOP Salta al inicio del fichero
BOTTOM Salta al final del fichero
UP Salta hacia atrs en el fichero
CUT Copia un cierto nmero de lneas (de un fichero a otro)
PASTE Pega las lneas copiadas
DOWN Salta hacia atrs en el fichero
RESTORE Deshace los comandos introducidos

Comandos de lnea:

Se introducen en la lnea a tratar.


C Copiar
A Despus
B Antes
COLS Muestra los nmeros de columnas
D Borrar
I Insertar
M Mueve
O Solapar

Aliatis

41

R Repetir
TS Dividir lnea
X Excluir
<> Desplazar
() Desplazar
Para copiar un nmero determinado de lneas de un fichero a otro, se
edita el miembro destino, se pone A en la lnea donde se quiera aadir
las lneas y se introduce el comando COPY.

Menu RefList Utilities Help


ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssss
Edit/View - Copy
Command ===>
More:
+
"Current" Data Set: E8985.SRCHFOR.LIST
From ISPF Library:
Project . . . DESA2
Group . . . . FUENTE
Type . . . . CICS
Member . . .
selection list)

. . .

. . .

. . .

(Blank or pattern for member

From Other Partitioned or Sequential Data Set:


Data Set Name . . . 'E8985.SRCHFOR.LIST'
Volume Serial . . .
(If not cataloged)
Data Set Password

. .

(If password protected)

Line Numbers (Blank for entire member or sequential data set)


First line . . . .
Last line . . . . .
Number type . . . .
(Standard, ISPFstd, COBOL, or
Relative)

42

Aliatis

Utilities

Opcin 3.
Menu Help
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssss
Utility Selection Panel
Option ===>
1 Library
Print,
2 Data Set
display
3 Move/Copy
4 Dslist
names.

Compress or print data set.

Print index listing.

rename, delete, browse, edit or view members


Allocate, rename, delete, catalog, uncatalog, or
information of an entire data set
Move, copy, or promote members or data sets
Print or display (to process) list of data set

Print or display VTOC information


5 Reset
Reset statistics for members of ISPF library
6 Hardcopy
Initiate hardcopy output
7 Transfer
Download ISPF Client/Server or Transfer data set
8 Outlist
Display, delete, or print held job output
9 Commands
Create/change an application command table
* Reserved
This option reserved for future expansion
11 Format
Format definition for formatted data Edit/Browse
12 SuperC
Compare data sets
(Standard Dialog)
13 SuperCE
Compare data sets Extended
(Extended Dialog)
14 Search-For Search data sets for strings of data
(Standard Dialog)
15 Search-ForE Search data sets for strings of data Extended
(Extended Dialog)

Aliatis

43

Lista de ficheros y libreras. Opcin 3,4.


Menu RefList RefMode Utilities Help
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssss
Data Set List Utility
Option ===>
blank Display data set list
V Display VTOC information
information

P Print data set list


PV Print VTOC

Enter one or both of the parameters below:


Dsname Level . . . E8985.J* * CL
Volume serial . .
Data set list options
Initial View . . . 1
option

1. Volume

Enter "/" to select

2. Space

Confirm Data Set

3. Attrib

Confirm Member

Delete
Delete
4. Total
When the data set list is displayed, enter either:
"/" on the data set list command field for the command prompt
pop-up,
an ISPF line command, the name of a TSO command, CLIST, or REXX
exec, or
"=" to execute the previous command.

44

Aliatis

Al darle al ENTER obtenemos el listado de ficheros y libreras:


Menu Options View Utilities Compilers Help
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssss
DSLIST - Data Sets Matching E8985.J*
Row 1 of 1
Command ===>
Scroll ===> CSR
Command - Enter "/" to select action
Message
Volume
-----------------------------------------------------------------------------E8985.JCLLIB
MSTD01
***************************** End of Data Set list
****************************

Aqu se puede copiar ficheros, renombrar, mover, etc.


Mantenimiento de ficheros y librerias. Opcin 3,2.
Menu RefList Utilities Help
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssss
Data Set Utility
Option ===>
A Allocate new data set
R Rename entire data set
D Delete entire data set
information
blank Data set information

C Catalog data set


U Uncatalog data set
S Short data set
V VSAM Utilities

ISPF Library:
Project . . DESA2
Group . . . FUENTE
Type . . . . CICS
Other Partitioned, Sequential or VSAM Data Set:
Data Set Name . . . 'E8985.SRCHFOR.LIST'
Volume Serial . . .
(If not cataloged, required for
option "C")
Data Set Password

. .

(If password protected)

Aliatis

45

Al darle al ENTER obtenemos el listado de ficheros y libreras:


Data Set Information
Command ===>
Data Set Name . . . . : E8985.SRCHFOR.LIST
General Data
Management class . .
Storage class . . .
Volume serial . . .
Device type . . . .
Data class . . . . .
Organization . . .
Record format . . .
Record length . . .
Block size . . . .
1st extent blocks .
Secondary blocks .
Data set name type

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

MIUSLIST
STANDARD
MSTD06
3390
**None**
PS
FBA
133
13566
4
100

Creation date . . . : 2004/05/24


2004/05/25
Expiration date . . : ***None***

46

Aliatis

Current Allocation
Allocated blocks . : 4
Allocated extents . : 1

Current Utilization
Used blocks . . . . : 1
Used extents . . . : 1

SMS Compressible

. : NO

Referenced date . . :

Anexo
Codigos de Error

File Status.

ERROR EXPLICACION
00

Operacin satisfactoria, todo bien.

10

Cuando se ha llegado al final del fichero y se quiere seguir leyendo.

22

Se intenta copiar un registro con una clave ya existente.

23

Cuando se hace un acceso directo a un registro inexistente.

24

No hay espacio en disco para realizar la operacin.

30

Es un error grave de entrada/salida, suele ser ajeno a Cobol y mas concreto en


cuanto a configuracin del sistema operativo sobre el que se est ejecutando, para
solucionarlo deberemos prestar atencin a los dos dgitos siguientes al error.

34

Igual que el 24 por falta de espacio en disco.

35

El archivo al que hace referencia no existe.

39

La organizacin del fichero que se quiere abrir no coincide con su organizacin real
interna. Suele pasar cuando se modifica una FD y el fichero contina siendo el
mismo.

41

Cuando intentamos abrir un archivo que ya est abierto.

42

Si intentamos cerrar un archivo que no esta abierto.

43

Cuando se quiere borrar o reescribir un registro en un fichero abierto con acceso


secuencial.

47

Se quiere realizar alguna operacin que no corresponde con el modo de acceder al


fichero. Si queremos hacer un READ o un START en un archivo que no ha sido
abierto como INPUT o como I-O.

48

Igual que el anterior, pero para el caso de querer escribir en un fichero que no esta
abierto o no est abierto como I-O, OUTPUT o EXTEND.

49

Cuando queremos borrar o reescribir en un fichero que no ha sido abierto como I-O
o el fichero no est abierto.

90

Cuando COBOL recibe un mensaje irreconocible, suele estar ocasionado por


incompatibilidad entre los accesos a los ficheros, su forma de apertura y su modo
de acceso.

91

Igual que el 42.

92

Cuando intentamos leer, escribir, borrar, reescribir sobre un archivo no abierto.

93

El archivo est en conflicto con otro usuario.

94

Igual que el 39, tiene muchsimas vertientes dependiendo de los dos dgitos
siguientes que acompaan al error.

98

Grave error interno en la estructura del fichero, generalmente se suelen provocar


cuando hay un corte elctrico o una salida brusca del programa y algn fichero
indexado se ha quedado abierto, lo que suele ocurrir es problema de
correspondencia entre claves y datos.

99

Al borrar, leer o reescribir un registro que est siendo bloqueado por otro usuario.

48

Aliatis

SQL Code.

000 SUCCESSFUL EXECUTION. Ejecucion correcta.


Warning SQLCODES - Codigos de atencion (Llevan signo)
Warning SQLSTATE - Codigos de atencion (Estan entre parentesis)
+100 ROW NOT FOUND FOR A FETCH, UPDATE OR DELETE, OR THE RESULT
(02000) OF A QUERY IS AN EMPTY TABLE
+162 TABLESPACE database-name.tablespace-name HAS BEEN PLACED IN
CHECK PENDING
+304 A VALUE WITH DATA TYPE data_type1 CANNOT BE ASSIGNED TO A
HOST VARIABLE BECAUSE THE VALUE IS NOT WITHIN THE RANGE OF
THE HOST VARIABLE IN POSITION position_number WITH DATA TYPE
data_type2
+402 LOCATION location IS UNKNOWN
+403 THE LOCAL OBJET REFERENCED BY THE CREATE ALIAS STATEMENT
DOES NOT EXIST
+558 THE WITH GRANT OPTION IS IGNORED BECAUSE GRANT IS TO PUBLIC
+560 THE WITH GRANT OPTION IS IGNORED FOR UPDATE (COLUMN_LIST)
+561 THE ALTER AND INDEX PRIVILEGES CANNOT BE GRANTED TO "PUBLIC
AT ALL LOCATIONS"
+625 THE DEFINITION OF TABLE table-name HAS BEEN CHANGED TO INCOMPLETE
+802 EXCEPTION ERROR exception_type OCURRED DURING operation_type
OPERATION ON data_type DATA, POSITION position_number
Error SQLCODES - Codigos de error (Con signo)
Error SQLSTATE - Codigos de error (Entre parentesis)
(01501) Al hacer SELECT o INSERT, hay alguna variable truncada,
por no coincidir las longitudes
-007 STATEMENT CONTAINS THE ILEGAL CHARACTER character
-010 THE STRING CONSTANT BEGINNING string IS NOT TERMINATED
-060 INVALID type SPECIFICATION: spec

Aliatis

49

-084 UNACCEPTABLE SQL STATEMENT


-101 THE STATEMENT IS TOO LONG OR TOO COMPLEX
-102 THE LENGTH OF THE STRING CONSTANT BEGINNING string IS GREATER THAN 254 CHARACTERS OR 124 GRAPHIC CHARACTERS
-103 literal IS AN INVALID NUMERIC LITERAL
-104 STATEMENT CONTAINS THE INVALID CHARACTER OR TOKEN token-1.
(37501) TOKEN token-2 WAS EXPECTED. Error sintactico.
-105 INVALID STRING
-107 THE NAMA name IS TOO LONG. MAXIMUN ALLOWABLE SIZE IS size
-109 clause CLAUSE IS NOT PERMITTED
-110 INVALID HEXADECIMAL LITERAL BEGINNING string
-111 A COLUMN FUNCTION DOES NOT INCLUDE A COLUMN NAME
-112 THE OPERAND OF A COLUMN FUNCTION IS ANOTHER COLUMN FUNCTION
OR DISTINCT FOLLOWED BY AN EXPRESION
-113 INVALID CHARACTER FOUND IN NAME: name
-115 A PREDICATE IS INVALID BECAUSE THE COMPARISON OPERATOR operator IS FOLLOWED BY A PARENTHESIZED LIST OR BY ANY OR ALL
WITHOUT A SUBQUERY
-117 THE NUMBER OF INSERT VALUES IS NOT THE SAME AS THE NUMBER
(53002) OF OBJET COLUMNS
-118 THE OBJET TABLE OR VIEW OF THE INSERT, DELETE, OR UPDATE
STATEMENT IS ALSO IDENTIFIED IN A FROM CLAUSE
-119 A COLUMN IDENTIFIED IN A HAVING CLAUSE IS NOT INCLUDE IN THE
GROUP BY CLAUSE
-120 A WHERE CLAUSE OR SET CLAUSE INCLUDES A COLUMN FUNCTION OR
A WHERE CLAUSE INCLUDES A REFERENCE TO COLUMN [column-name]
WHICH IS DERIVED FROM A COLUMN FUNCTION IN A VIEW DEFINITION
-121 THE COLUMN name IS IDENTIFIED MORE THAN ONCE IN THE INSERT
OR UPDATE STATEMENT

50

Aliatis

-122 A SELECT STATEMENT WITH NO GROUP BY CLAUSE CONTAINS A COLUMN


NAME AND A COLUMN FUNCTION IN THE SELECT CLAUSE OR A COLUMN
NAME IS CONTAINED IN THE SELECT CLAUSE BUT NOT IN THE GROUP
BY CLAUSE
-125 AN INTEGER IN THE ORDER BY CLAUSE DOES NOT IDENTIFY A COLUMN
OF THE RESULT
-126 THE SELECT STATEMENT CONTAINS BOTH AN UPDATE CLAUSE AND AN
ORDER BY CLAUSE
-127 DISTINCT IS SPECIFIED MORE THAN ONCE IN A SUBSELECT
-128 INVALID USE FOR NULL IN A PREDICATED
-129 THE STATEMENT CONTAINS TOO MANY TABLE NAMES
-131 STATEMENT WITH LIKE PREDICATE HAS INCOMPATIBLE DATA TYPES
-132 A LIKE PREDICATE IS INVALID BECAUSE THE FIRST OPERANDO IS
NOT A COLUMN OR THE SECOND OPERAND IS NOT A STRING
-133 A COLUMN FUNCTION IN A SUBQUERY OF A HAVING CLAUSE IS INVALID BECAUSE IT INCLUDES AN EXPRESSION THAT APPLIES AN OPERATOR TO A CORRELATED REFERENCE
-134 IMPROPER USE OF LONG STRING COLUMN column-name OR A HOST
vaRIABLE OF MAXIMUM LENGTH GREATER THAN 254
-136 SORT CANNOT BE EXECUTED BECAUSE THE SORT KEY LENGTH IS GREATER THAN 4000 BYTES
-137 RESULT OF CONCATENATION TOO LONG
-138 THE SECOND OR THIRD ARGUMENT OF THE SUBSTR FUNCTION IS OUT
OF RANGE
-150 THE OBJET OF THE INSERT, DELETE, OR UPDATE STATEMENT IS A
VIEW FOR WHICH THE REQUEST OPERATION IS NOT PERMITED
-151 THE COLUMN column-name CONNOT BE UPDATE BECAUSE IT IS EITHER
OR INCLUDED INTHE PARTITIONING KEY OF A PARTITIONES TABLESPACE DERIVED FROM A SQL FUNCTION OR EXPRESSION
-153 THE CREATE VIEW STATEMENT DOES NOR INCLUDE A REQUIRED COLUMN
LIST
-154 THE CREATE VIEW FAILED BECAUSE THE VIEW DEFINITION CONTAINS
A UNION, OR UNION ALL, OR A REMOTE OBJETC

Aliatis

51

-156 THE ALTER TABLE, DROP TABLE, LOCK TABLE, OR CREATER INDEX
STATEMENT IDENTIFIES A VIEW
THE STATEMENT DOES NOT IDENTIFY A TABLE
-157 ONLY A TABLE NAME CAN BE SPECIFIED EN A FOREIGN KEY CLAUSE.
object-name IS NOT THE NAME OF A TABLE

-158 THE NUMBER OF COLUMNS SPECIFIED FOR THE VIEW IS NOT THE SAME
AS THE NUMBER OF COLUMNS SPECIFIED BY THE SELECT CLAUSE
-159 THE NAME SPECIFIED ON DROP VIEW IS A TABLE NAME
-160 THE WITH CHECK OPTION CANNOT BE USED FOR THE SPECIFIED VIEW
-161 THE INSERT OR UPDATE IS NOT ALLOWED BECAUSE A RESULTING ROW
DOES NOT SATISFY THE VIEW DEFINITION
-164 auth-id1 DOES NOT HAVE THE PRIVILEGE TO CREATE A VIEW WITH
QUALIFICATION auth-id2
-170 THE NUMBER OF ARGUMENTS SPECIFIED FOR function-name IS INVA
LID
-171 THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT nn OF function-name IS INVALID
-172 function-name IS NOT A VALID FUNCTION NAME
-180 THE STRING REPRESENTATION OF A DATETIME VALUE INVALID SYSN(22007) TAX
-181 THE STRING REPRESENTATION OF A DATETIME VALUE IS NOT A VALID VALUE
-182 AN ARITHMETIC EXPRESSION WITH A DATETIME VALUE IS INVALID
-183 AN ARITHMETIC OPERATION ON A DATE OR TIMESTAMP HAS A RESULT
THAT IS NOT WITHIN THE VALID RANGE OF DATES
-184 AN ARITHMETIC EXPRESSION WITH A DATETIME VALUE CONTAINS A
PARAMETER MARKET
-185 THE LOCAL FORMAT OPTION HAS BEEN USED WITH A DATE OR TIME
AND NO LOCAL EXIT HAS BEEN INSTALLED
-186 THE LOCAL DATE LENGTH OR LOCAL TIME LENGTH HAS BEEN ONCREASED AND EXECUTING PROGRAM RELIES ON THE OLD LENGTH
-187 A REFERENCE TO A CURRENT DATA/TIME SPECIAL REGISTER IS INVA-

52

Aliatis

LID BECAUSE THE MVS TOD CLOCK IS BAD OR THE MVS PARMTZ IS
OUT OF RANGE
-198 THE OPERAND OF THE PREPARE OR EXECUTE IMMEDIATE STATEMENT
IS BLANCK OR EMPTY
-199 ILLEGAL USE OF KEYWORD keyword TOKEN token-list WAS EXPECTED
-203 A REFERENCE TO COLUMN column-name IS AMBIGUOUS
-204 name IS AN UNDEFINED NAME. Posiblemente la tabla no tenga
sinomimo.
-205 column-name IS NOT A COLUMN OF TABLE table-name

-206 column-name IS NOT A COLUMN OF AN INSERTED TABLE OR AN TABLE IDENTIFIED IN A FROM CLAUSE
-207 THE ORDER BY CLAUSE IS INVALID BECAUSE IT INCLUDES A COLUMN
NAME BUT IT APPLIES TO THE RESUL OF A UNION OR UNION ALL
-208 THE ORDER BY CLAUSE IS INVALID BECAUSE COLUMN name IS NOT
PART OF THE RESULT TABLE
-219 THE REQUIRED EXPLANATION TABLE table-name DOES NOT EXIST
-220 THE COLUMN column-name IN EXPLANATION TABLE table-name IS
NOT DEFINED PROPERLY
-221 "SET OF OPTIONAL COLUMNS" IS EXPLANATION TABLE table-name
IS INCOMPLETE. OPTIONAL COLUMN column-name IS MISSING
-250 THE LOCAL LOCATION NAME IS NOT DEFINED WHEN PROCESSING A
THREE-PART OBJECT NAME
-251 TOKEN name IS NOT VALID
-301 THE VALUE OF A HOST VARIABLE CANNOR BE USED AS SPECIFIED
BECAUSE OF ITS DATA TYPE
-302 THE VALUE OF AN INPUT VARIABLE IS TOO LARGE FOR THE TARGET
COLUMN
-303 A VALUE CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE THE
DATA TYPES ARE NOT COMPARABLE
-304 A VALUE WITH DATA TYPE data_type1 CANNOT BE ASSIGNED TO A
HOST VARIABLE BECAUSE THE VALUES IS NOT WITHIN THE RANGE OF

Aliatis

53

THE HOST VARIABLE IN POSITION position_numer WITH DATA TYPE


data_type2.
-305 THE NULL VALUE CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE
NO INDICATOR VARIABLE IS SPECIFIED
-309 A PREDICATE IS INVALID BECAUSE A REFERENCED HOST VARIABLE
HAS THE NULL VALUE
-311 THE INDICATED LENGTH OF A HOST VARIABLE IS NEGATIVE
-312 UNDEFINED OR UNUSUABLE HOST VARIABLE variable-name
-313 THE NUMBER OF HOST VARIABLES SPECIFIED IS NOT EQUAL TO THE
NUMBER OF PARAMETER MARKES
-314 THE STATEMENT CONTAINS AN AMBIGUOUS HOST VARIABLE REFERENCE
-401 THE OPERANDS OF AN ARITHMETIC OR COMPARISON OPERATION ARE
NOT COMPARABLE
-402 AN ARITHMETIC FUNCTION OR OPERATOR arith-fop IS APPLIED TO
CHARACTER OR DATATIME DATA

-404 THE UPDATE OR INSERT STATEMENT SPECIFIES A STRING THAT IS


TOO LONG column-name
-405 THE NUMERIC LITERAL literal CANNOT BE USED AS SPECIFIED BECAUSE IT IS OUT OF RANGE
-406 A CALCULATED OR DERRIVED NUMERIC VALUE IS NOT WITHIN THE
RANGE OF ITS OBJECT COLUMN
-407 AN UPDATE OR INSERT VALUE IS NULL, BUT THE OBJET COLUMN column-name CANNOT CONTAIN NULL VALUES. La tabla no tiene las
columnas que queremos insertar.
-408 AN UPDATE OR INSERT VALUE IS NOT COMPARABLE WITH THE DATA
TYPE OF ITS OBJECT COLUMN column-name
-409 INVALID OPERAND OF A COUNT FUNCTION
-410 THE FLOATING POINT LITERAL literal CONTAINS MORE THAN 30
CHARACTERS
-411 THE CURRENT DATETIME OR USER KEYWORD CON NOT BE USED AS SPECIFIED
-412 THE SELECT CLAUSE OF A SUBQUERY SPECIFIES MULTIPLE COLUMNS

54

Aliatis

-413 OVERFLOW OCCURRED DURING DATA TYPE CONVERRSION


-414 THE NUMERIC OR DATATIME COLUMN column-name IS SPECIFIED IN
A LIKE PREDICATE
-415 THE CORRESPONDING COLUMNS, column-number, THE OPERANDS OF A
UNION OR A UNION ALL DO NOT HAVE COMPARABLE COLUMN DESCRIPTIONS
-416 AN OPERAND OF A UNION CONTAINS A LONG STRING COLUMN
-417 A STATEMENT STRING TO BE PREPARED INCLUDES PARA METER MARKES
AS THE OPERANDS OF THE SAME OPERATOR
-418 A STATEMENT STRING TO BE PREPARED CONTAINS AN INVALID USE
OF PARAMETER MARKES
-419 THE DECIMAL DIVIDE OPERATION IS INVALID BECAUSE THE RESULT
WOULD HAVE A NEGATIVE SCALE
-421 THE OPERANDS OF A UNION ALL DO NOT HAVE THE SAME NUMBER OF
COLUMNS
-501 THE CURSOR IDENTIFIED IN A FECH OR CLOSE STATEMENT IS NOT
(24501) OPEN. El cursor no esta abierto (select)
-502 THE CURSOR IDENTIFIED IN AN OPEN STATEMENT IS ALREADY OPEN
(24502) El cursor ya esta abierto (select)

-503 A COLUMN CANNOT BE UPDATE BECAUSE IT IS NOT IDENTIFIED IN


(56012) THE UPDATE CLAUSE OF THE SELECT STATEMENT OF THE CURSOR
No se puede actualizar una columna porque no aparece en la
sentencia FOR UPDATE OF del cursor
-504 THE CURSOR NAME cursor-name IS NOT DEFINED
(52008) El cursor no esta definido
-507 THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS
(24501) NOT OPEN
El cursor no esta abierto (update)
-508 THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS
(24504) NOT POSITIONED ON A ROW
El cursor no esta posicionado en una fila (update)
-509 THE TABLE IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS
(53027) NOT THE SAME TABLE DESIGNATED BY THE CURSOR

Aliatis

55

La tabla indicada en el update o select no es la misma que


la especificada en el cursor.
-510 THE TABLE DESIGNATED BY THE CURSOR OF THE UPDATE OR DELETE
(53028) STATEMENT CANNOT BE MODIFIED
La tabla designada por el update o delete del cursor no se
puede modificar
-511 THE FOR UPDATE CLAUSE CANNOT BE SPECIFIED BECAUSE THE TABLE
(53029) DESIGNATED BY THE CURSOR CANNOT BE MODIFIED
No se puede especificar la clausula FOR UPDATE OF porque la
tabla no se puede modificar
-512 STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID
-513 THE ALIAS alias-name MUST NOT BE DEFINED ON ANOTHER LOCAL
OR REMOTE ALIAS
-514 THE CURSOR cursor-name IS NOT IN A PREPARED STATE
-516 THE DESCRIBE STATEMENT DOES NOT IDENTIFY A PREPARED STATEMENT
-517 CURSOR cursor-name CANNOT BE USED BECAUSE ITS STATEMENT NAME DOES NOR IDENTIFY A PREPARED SELECT STATEMTENT
-518 THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED
STATEMENT
-519 THE PREPARE STATEMENT IDENTIFIES THE SELECT TEMENT OF THE
OPENED CURSOR cursor-name
-530 THE INSERT OR UPDATE VALUE OF FOREIGN KEY constraint-name
(23503) IS INVALID
La clave ajena no existe como clave primaria

-531 THE PRIMARY KEY IN A PARENT ROW CANNOT BE UPDATE BECAUSE IT


(23504) HAS ONE OR MORE DEPENDENT ROWS IN A RELATIONSHIP contraint-name
No se puede actualizar la clave primaria por tener filas relacionadas en la tabla hijo.
-532 THE RELATIONSHIP contraint-name RESTRICTS THE DELETION OF
(23504) ROW WITH RID X'rid-number'
No se puede borrar la clave primaria por tener filas relacionadas en la tabla hijo.
-533 INVALID MULTIPLE-ROW INSERT

56

Aliatis

-534 THE PRIMARY KEY CANNOT BE UPDATED BECAUSE OF MULTIPLE-ROW


(21502) UPDATE
Se intenta actualizar multiples filas de la clave primaria
en un solo update.
-535 INVALID UPDATE OR DELETE WITH WHERE CURRENT OF
-536 THE DELETE STATEMENT IS INVALID BECAUSE TABLE table-name
(56104) CAN BE AFFECTED BY THE OPERATION
Hay una tabla descendiente afectada en un proceso de borrado en cascada.
-537 THE PRIMARY KEY OR FOREIGN KEY CLAUSE IDENTIFIES COLUMN
column-name MORE THEN ONCE
-538 FOREIGN KEY name DOES NOT CONFORM TO THE DESCRIPTION OF THE
PRIMARY KEY OF TABLE table-name
-539 TABLE table-name DOES NOT HAVE A PRIMARY KEY
-540 THE DEFINITION OF TABLE table-name IS INCOMPLETE BECAUSE IS
DOES NOT HAVE A PRIMARY INDEX
-541 FOREIGN KEY name IS INVALID BECAUSE IT IS A DUPLICATE REFERENTIAL CONSTRAINT
-542 column-name CANNOT BE A COLUMN OF A PRIMARY KEY BECAUSE IT
CAN CONTAIN NULL VALUES
-551 auth-id DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION
operation ON OBJET objet-name
Cuando se intenta hacer un bing de un programa que no es
de la entidad (ejem-caser) hay que hacer :
SET CURRENT SQLID='BRB0902';
GRANT BING, EXECUTE ON PLAN ________ TO PUBLIC
nom.prog.
-552 auth-id DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION
operation
-553 auth-id SPECIFIED IS NOT ONE OF THE VALID AUTHORIZATION IDS
-554 AN AUTHORIZATION ID CANNOT GRANT A PRIVILEGE TO ITSELF
-555 AN AUTHORIZATION ID CANNOT REVOKE A PRIVILEGE FROM ITSELF
-556 A PRIVILEGE CANNOT BE REVOKED BECAUSE IT IS NOT POSSESSED
BY auth-id

Aliatis

57

-557 INCONSISTENT GRAND/REVOKE KEYWORD keyword PERMITED KEYWORDS


ARE keyword-list
-558 INVALID CLAUSE OR COMBINATION OF CLAUSES ON A GRANT OR REVOKE
-559 ALL AUTHORIZATION FUNCTIONS HAVE BEEN DISABLED
-571 THE STATEMENT WOULD RESULT IN A MULTIPLE SITE UPDATE
-601 THE NAME OF THE OBJET BE CREATED IS IDENTICAL TO THE EXISTING NAME name OF THE OBJET TYPE objet-type
El nombre de la tabla o de la vista esta mal definido.
-602 TOO MANY COLUMNS SPECIFIED IN A CREATE INDEX
-603 A UNIQUE INDEX CANNOT BE CREATED BECAUSE THE TABLE CONTAINS
ROWS WHICH ARE DUPLICATES WITH RESPECT TO THE VALUES OF THE
IDENTIFIED COLUMNS
-604 A COLUMN DEFINITION SPECIFIES AN INVALID LENGTH PRECISION,
OR SCALE ATTRIBUTE
-607 OPERATION operation IS NOT DEFINED FOR SYSTEM TABLES
-612 column-name IS A DUPLICATE COLUMN NAME
-613 THE PRIMARY KEY IS TOO LONG OR HAS TOO MANY COLUMNS
-614 THE INDEX CANNOT BE CREATED BECAUSE THE SUM OF THE INTERNAL
LENGTHS OF THE IDENTIFIED COLUMNS IS GREATER THEN THE ALLOWABLE MAXIMUN
-616 obj-type1 obj-name1 CANNOT BE DROPPED BECAUSE IS REFERENCED
BY obj-type2 obj-name2
-618 OPERATION operation IS NOT ALLOWED ON SYSTEM DATA BASES
-619 OPERATION DISALLOWED BECAUSE THE WORKFILE DATA BASE IS NOT
STOPPED
-620 KEYWORD keyword IN stmt type STATEMENT IS NOT PERMITTED FOR
A TABLESPACE IN THE WORKFILE DATA BASE
-621 DUPLICATE DBID dbid WAS DETECTED AND PREVIOUSLY ASSIGNED TO
database-name
-623 A CLUSTERING INDEX ALREADY EXIST ON TABLE table-name
-624 TABLE table-name ALREADY HAS A PRIMARY KEY

58

Aliatis

-625 TABLE table-name DOES NOT HAVE AN INDEX TO ENFORCE THE UNIQUENESS OF THE PRIMARY KEY
-626 THE ALTER STATEMENT IS NOT EXECUTABLE BECAUSE THE PAGESET
IS NOT STOPPED
-627 THE ALTER STATEMENT IS INVALID BECAUSE THE PAGESET HAS USER-MANAGED DATA SETS
-628 A SEGMENTED TABLESPACE MAY NOT BE PARTITIONED
-629 SET NULL CANNOT BE SPECIFIED BECAUSE FOREIGN KEY name CANNOT
CONTAIN NULL VALUES
-631 FOREIGN KEY name IS TOO LONG OR HAS TOO MANY COLUMNS
-632 THE TABLE CANNOT BE DEFINED AS A DEPENDENT OR table-name
BECAUSE OF DELETE RULE RESTRICTIONS
-633 THE DELETE RULE MUST BE delete-rule
-634 THE DELETE RULE MUST NOT BE CASCADE
-635 THE DELETE RULES CANNOT BE DIFFERENT OR CANNOT BE SET NULL
-636 THE PARTITIONING KEYS ARE NOT SPECIFIED IN ASCENDING OR
DESCENDING ORDER
-637 DUPLICATE keyword KEYWORD (lectura)
-638 TABLE table-name CANNOT BE CREATED BECAUSE COLUMN DEFINITION IS MISSING
-639 A NULLABLE COLUMN OF A FOREIGN KEY WITH A DELETE RULE OF SET
NULL CANNOT BE A COLUMN OF THE KEY OF A PARTITIONED INDEX
-644 INVALID VALUE SPECIFIED FOR KEYWORD keyword IN stmt-type
STATEMENT
-646 TABLE table-name CANNOT BE CREATED IN PARTITIONED/DEFAULT
TABLESPACE tspace-name BACAUSE IT ALREADY CONTAINS A TABLE
-647 BUFFERPOOL bp-name CANNOT BE SPECIFIED BECAUSE IT HAS NOT
BEEN ACTIVATED
-652 VIOLATION OF INSTALLATION DEFINED EDIT OR VALIDATION PROCEDURE proc-name
-653 TABLE table-name IN PARTITIONED TABLESPACE tspace-name IS

Aliatis

59

NOT AVAILABLE BECAUSE ITS PARTITIONED INDEX HAS NOT BEEN


CREATED
-660 INDEX index-name CANNOT BE CREATED ON PARTITIONED TABLESPACE
tspace-name BECAUSE KEY LIMITS ARE NOT SPECIFIED
-661 INDEX index-name CANNOT BE CREATED ON PARTITIONED TABLESPACE
tspace-name BECAUSE THE NUMBER OF PART SPECIFICATIONS IS NOT
EQUAL TO THE NUMBER OF PARTITIONS OF THE TABLASPACE
-662 A PARTITIONED INDEX CANNOT BE CREATED ON A NON-PARTITIONED
TABLESPACE tspace-name
-663 THE NUMBER OF KEY LIMIT VALUES IS EITHER ZERO, OR GREATER
THAN THE NUMBER OF COLUMNS IN THE KEY OF INDEX index-name

-664 THE INTERNAL LENGTH OF THE LIMIT-KEY FIELDS FOR THE PARTITIONED INDEX index-name EXCEEDS THE LENGTH IMPOSED BY THE
INDEX MANAGER
-665 THE PART CLAUSE OF AN ALTER STATEMENT IS OMITTED OR INVALID
-666 stmt-verb object CANNOT BE EXECUTED BECAUSE A UTILITY IS IN
PROGRESS
-667 THE CLUSTERING INDEX FOR A PARTITIONED TABLESCE CANNOT BE
EXPLICITLY DROPPED
-668 THE COLUMN CANNOT BE ADDED TO THE TABLE BECAUSE THE TABLE
HAS AN EDIT PROCEDURE
-669 A TABLE IN A PARTITIONED TABLESPACE CANNOT BE EXPLICITLY
DROPPED
-670 THE RECORD LENGTH OF THE TABLE EXCEEDS THE PAGE SIZE LIMIT
-671 THE BUFFERPOOL ATTRIBUTE OF THE TABLESPACE CAN NOT BE ALREADY AS SPECIFIED BECAUSE IT WOULD CHANGE THE PAGE SIZE OF
THE TABLESPACE
-676 A 32K PAGE BUFFERPOOL MAY NOT BE USED FOR AN INDEX
-677 INSUFFICIENT VIRTUAL STORAGE FOR BUFFERPOOL EXPANSION
-678 THE LITERAL literal SPECIFIED FOR THE INDEX LIMIT KEY MUST
CONFORM TO THE DATA TYPE data-type OF THE CORRESPONDING COLUMN column-name
-679 THE OBJET name CANNOT BE CREATED BECAUSE A DROP IS PENDING

60

Aliatis

ON THE OBJET
-680 TOO MANY COLUMNS SPECIFIED FOR A TABLE
-681 COLUMN column-name IN VIOLATION OF INSTALLATION DEFINED
FIELD PROCEDURE. RT: return-code, RS: reason-code, MSG:message-token
-682 FIELD PROCEDURE procedure-name COULD NOT BE LOADED
-683 INVLID COLUMN TYPE FOR FIELDPROC OPTION, column-name
-684 THE LENGTH OF LITERAL LIST BEGINING string IS TOO LONG
-685 INVALID FIEL TYPE, column-name
-686 COLUMN DEFINED WITH A FIELD PROCEDURE CAN NOT COMPARE WITH
ANOTHER COLUMN WITH DIFFERENT FIELD PROCEDURE
-687 FIELD TYPES INCOMPARABLE
-688 INCORRECT DATA RETURNED FROM FIELD PROCEDURE, column-name,
msgno
-802 EXCEPTION ERROR 'exception_type' HAS OCCURRED DURING 'operation_type' OPERATION ON 'data_type' DATA, POSITION 'position_number'
-803 ONE OR MORE INSERT OR UPDATE VALUES ARE INVALID BECAUSE THE
(23505) OBJECT COLUMNS ARE CONSTRAINED SUCH THAT NO TWO ROWS OF THE
TABLE CAN BE DUPLICATES WITH RESPECT TO THE VALUES OF THOSE
COLUMNS. Se esta insertando o actualizando una clave unica
con valores duplicados. Clave duplicada.
-804 AN ERROR WAS FOUND IN THE APPLICATION PROGRAM INPUT PARAMETERS FOR THE SQL STATEMENT
-805 PROGRAM NAME program-name NOT FOUND IN PLAN plan-name
(51002) El programa no esta relacionado con el plan. Falta hacer
Bind.
-811 THE RESULT OF AN EMBEDDED SELECT STATEMENT IS A TABLE OF MO(21000) RE THAN ONE ROW, OR THE RESULT OF THE SUBQUERY OF A BASIC
PREDICATE IS MORE THAN ONE VALUE
-815 A GROUP BY OR HAVING CLAUSE IS IMPLICITLY OR EXPLICITLY
SPECIFIED IN AN ENBEDDED SELECT STATEMENT OR A SUBQUERY PF
A BASIC PREDICATE
-817 THE INSERT, UPDATE, DELETE, DDI, OR AUTHORIZATION STATEMENT

Aliatis

61

CANNOT BE EXECUTED BECAUSE THE IMS/VS TRANSATION IS INQUIRY


ONLY
-818 THE PRECOMPILER-GENERATED TIMESTAMP x IN THE LOAD MODULE IS
(51003) DIFFERENT FROM THE BIND TIME-STAMP y BUILT FROM THE DBRM
El timestamp del plan y del modulo no coinciden. No se ha
dado new copy.
-819 THE VIEW CANNOT BE RECREATED BECAUSE IT REFERENCES A VIEW
THAT COULD NOT BE RECREATED
-820 THE SQL STATEMENT CANNOR BE PROCESSED BECAUSE calalog-table
CONTAINS A VALUE THAT IS NOT VALID IN THIS RELEASE
-821 VIEW 'view-creator'.'view-name' HAS BEEN DROPPED DURING MI
GRATION. CREATOR 'synonym-creator' OF SYNONYM 'synonym-name'
COULD NOT BE RESOLVED
-822 THE SQLDA CONTAINS AN INVALID DATA ADDRESS OR INDICATOR VA
RIABLE ADDRESS
-840 TOO MANY ITEMS RETURNED IN A SELECT OR INSERT LIST
-901 UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT DOES
NOT PRECLUDE THE SUCCESSFUL EXECUTION OF SUBSEQUENT SQL
STATEMENTS
-902 UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT PRECLUDES THE SUCCESSFUL EXECUTION OF SUBSEQUENT SQL STATEMENTS

-904 UNSUCCESSFUL EXECUTION CAUSED BY AN ANAVAILABLE RESOURCE


(57011) REASON reason-code, TYPE OF RESOURCE resource-type, AND RESOURCE NAME resource-name
Recurso no disponible. Puede estar el tablespace pillado.
-905 UNSUCCESSFUL EXECUTION DUE TO RESOURCE LIMIT BEING EXCEEDED,
RESOURCE NAME = resource-name LIMIT = limit-amount1 CPU SECONDS (limit-amount2 SERVICE UNITS) DERIVED FROM limit-source
-906 THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THIS FUNCTION
IS DISABLED DUE TO A PRIOR ERROR
-907 UNABLE TO DETERMINE IF THE ATTEMPT TO COMMIT UPDATES MADE
AT A REMOTE SITE WAS SUCCESSFUL OR NOT
-909 THE OBJECT HAS BEEN DELETED
-910 THE SQL STATEMENT CANNOT A ACCESS AN OBJECT ON WHICH A DROP

62

Aliatis

OR ALTERL IS PENDING
-911 THE CURRENT UNIT OF WORK HAS BEEN ROLLED BACK DUE TO DEAD
(40000) LOCK OR TIMEOUT. REASON reason-code, TYPE OF RESOURCE resorce-type, AND RESOURCE NAME resource-name. Timeout.
Recurso no disponible, alguien esta utilizando la misma tabla en la misma transaccion, hay que esperar un poco y volverlo a intentar.
-913 UNSUCCESSFUL EXECUTION CAUSED BY DEADLOCK OR TIMEOUT. REASON
CODE reason-code, TYPE OF RESOURCE resource-type, AND RESOURCE NAME resource-name
-922 CONNECTION AUTHORIZATION FAILURE: error-type ERROR
Poner USER=SYSDBP.
-923 CONNECTION NOT ESTABLISHED: DB2 condition REASON reason-co(57015) de, TYPE resorce-type, NAME resource-name. Posiblemente se
ha perdido el bing, volver ha hacerlo, no hace falta compilarlo, cuidado con los miembros que tenga, hay que hacer
el bing a todos.
Mirar nombre del plan y DBRM y la compilacion.
-924 DB2 CONNECTION INTERNAL ERROR, function-code, return-code,
reason-code
-925 COMMIT NOT VALID IN IMS/VS OR CICS/OS/VS ENVIRONMENT
-926 ROLLBACK NOT VALID IN IMS/VS OR CICS/OS/VS ENVIRONMENT
-927 THE LANGUAJE INTERFACE (LI) WAS CALLED WHEN THE CONNECTING
(51006) ENVIRONMENT WAS NOT ESTABLISHED. THE PROGRAM SHOULD BE INVOKED UNDER THE DSN COMMAND
El programa se debe invocar bajo DSN

Aliatis

63