Академический Документы
Профессиональный Документы
Культура Документы
NDICE
2
Software Factory Rafael Campillo Lorenzo.
Cceres
REGION ........................................................................................................... 46
COND O IF/END/ELSE .................................................................................... 46
8.7. Sentencia DD................................................................................................ 46
DSN ................................................................................................................. 47
DISP................................................................................................................. 48
UNIT ................................................................................................................ 49
VOL.................................................................................................................. 49
DCB ................................................................................................................. 49
SPACE ............................................................................................................. 49
DIR .................................................................................................................. 49
SYSOUT ........................................................................................................... 49
8.8. Sentencia EXEC............................................................................................ 49
Nombre del programa ....................................................................................... 49
NOMBRE DEL PROCEDIMIENTO...................................................................... 49
Acct.................................................................................................................. 50
Addrspc............................................................................................................ 50
Cond ................................................................................................................ 50
Dprty ............................................................................................................... 50
Dynamnbr ........................................................................................................ 50
Parm ................................................................................................................ 50
Perform ............................................................................................................ 50
Rd .................................................................................................................... 50
Region .............................................................................................................. 50
time ................................................................................................................. 50
8.9. Utilidades de JCL.......................................................................................... 50
IEHLIST ........................................................................................................... 51
IEBGENER ....................................................................................................... 51
IEBCOPY .......................................................................................................... 52
IEBCOMPR....................................................................................................... 52
IEFBR14 .......................................................................................................... 52
DFSORT ........................................................................................................... 52
DFDSS ............................................................................................................. 53
8.10. Sentencias avanzadas JCL. CONCATENACIN DE FICHEROS ..................... 53
REGLAS DE CONCATENACIN ........................................................................ 53
ANEXOS ................................................................................................................. 55
ANEXO A: Notas y apuntes sobre COBOL y codificacin. ...................................... 55
ANEXO 1: Listado de FILE STATUS.................................................................... 57
ANEXO 2: Tutorial de los SQLCODES y sus causas .............................................. 62
3
Software Factory Rafael Campillo Lorenzo.
Cceres
NDICE DE FIGURAS.
Figura 1 - Subsistemas del OS-390 ........................................................................... 8
Figura 2 - Arquitectura de desarrollo ....................................................................... 10
Figura 3 - Herramientas de la arquitectura de desarrollo ......................................... 10
Figura 4 - Herramientas de desarrollo ON-LINE ....................................................... 11
Figura 5 - Campos de la tabla DAREPOS ................................................................. 92
Figura 6 - Campos de la tabla DAPROCBATCH ........................................................ 93
Figura 7 - Parmetros de la funcin XX_CANCELACION_PROCESOS_BATCH........... 98
Figura 8 - SORT - Ordenacion bsica .................................................................... 103
Figura 9 - SORT - Ordenacion parcial.................................................................... 104
Figura 10 - SORT - Copia de un fichero ................................................................. 105
Figura 11 - SORT - Copia parcial de un fichero...................................................... 106
4
Software Factory Rafael Campillo Lorenzo.
Cceres
5
Software Factory Rafael Campillo Lorenzo.
Cceres
El MVS fue lanzado al mercado por primera vez en 1974, y luego fue renombrado a
MVS/XA (por arquitectura extendida en ingls), ms tarde a MVS/ESA (por
arquitectura de sistemas empresariales), luego se renombr como OS/390 cuando se
le aadi al sistema operativo los servicios de UNIX, y finalmente a z/OS cuando los
modelos zSeries fueron introducidos al mercado. Todos ellos, sin embargo, son
fundamentalmente el mismo sistema operativo. De hecho, los programas que hayan
sido diseados para el sistema MVS pueden correr en z/OS sin modificacin alguna.
MVS fue creado basado en SVS (Single Virtual Storage, nico Almacn Virtual), y ste
a su vez fue creado a partir de MVT, una de las variantes del sistema operativo
OS/360.
La variante original del OS/360 era PCP (Programa de Control Primario) no soportaba
la ejecucin de tareas mltiples, y MVT (Multitareas con nmero de Tareas Variables)
era una mejora que era capaz de la ejecucin de mltiples tareas. Sobre esta base, el
sistema SVS aadi el almacn virtual, mejor conocido como memoria virtual; el
espacio de direccionamiento de esta memoria era compartido por todas las
aplicaciones.
MVS, finalmente, aadi la capacidad de que cada programa tuviera su propio espacio
de direccionamiento de memoria, de all su nombre.
ISPF Es una interfaz que permite al usuario lograr las mismas tareas que TSO pero
de una manera orientada a mens y formularios.
6
Software Factory Rafael Campillo Lorenzo.
Cceres
7
Software Factory Rafael Campillo Lorenzo.
Cceres
El esquema del proceso en tiempo real puede ser el siguiente: Un operador, desde una
oficina, introduce algn dato por el Terminal; la informacin viaja por la lnea
telefnica hasta el ordenador central; ste procesa la solicitud (por ejemplo una
peticin de saldo) y enva la respuesta al Terminal que efectu la peticin. Un Monitor
de Teleproceso (CICS) junto a un adecuado Mtodo de Acceso a Telecomunicaciones
(VTAM), permiten que este trasiego de informacin se efecte de forma muy rpida y
eficaz.
8
Software Factory Rafael Campillo Lorenzo.
Cceres
9
Software Factory Rafael Campillo Lorenzo.
Cceres
5. LA ARQUITECTURA DE DESARROLLO
10
Software Factory Rafael Campillo Lorenzo.
Cceres
QMF: Es un producto mediante el cual se pueden emitir sentencias (en SQL) contra
Bases de Datos DB2 de forma interactiva.
SPUFI: Tambin emite comandos SQL con la salvedad de que el proceso a realizar est
ya escrito en un fichero y permite usar sentencias de definicin de datos
PROEDIT: Editor para tablas DB2 que permite procesar tablas DB2 fcil y
rpidamente pues es de apariencia similar al ISPF. Usando esta aplicacin se pueden
modificar filas de las tablas sin conocimientos de SQL.
11
Software Factory Rafael Campillo Lorenzo.
Cceres
Clave Primaria (PRIMARY KEY): Si una columna est definida como clave primaria,
los datos de esa columna (campo) sern nicos. Es una columna o un conjunto de
columnas que identifican unvocamente a cada fila. Debe ser nica, no nula y
obligatoria. Como mximo, podemos definir una clave primaria por tabla.
Esta clave se puede referenciar por una columna o columnas. Cuando se crea una
clave primaria, automticamente se crea un ndice que facilita el acceso a la tabla.
Clave Ajena, Externa (FOREING KEY): Esta formada por una o varias columnas que
estn asociadas a una clave primaria de otra o de la misma tabla. Se pueden definir
tantas claves ajenas como se precise, y pueden estar o no en la misma tabla que la
clave primaria. El valor de la columna o columnas que son claves ajenas debe ser:
NULL o igual a un valor de la clave referenciada (regla de integridad referencial).
RESTRICCIN NULIDAD:
NOT NULL: si a un campo le especificamos NOT NULL, obligamos a que en ese campo
se meta informacin, no se puede quedar vaco.
NOT NULL WITH DEFAULT: No permite nulos, pero si se deja en blanco rellena. Con
esta opcin podramos dejar campos sin rellenar en la tabla.
NULLABLE: que permite nulos ( en caso de no poner nada cogera esa opcin por
defecto
12
Software Factory Rafael Campillo Lorenzo.
Cceres
UPDATE Tabla
SET
Campo1 = valor, , CampoN = valor
WHERE
Desde que nos conectamos hasta que ejecutemos ROLLBACK, El rollback recupera la
BD y la deja como estaba. Se usa en caso de error.
EXEC SQL
ROLLBACK
END-EXEC
El commit al contrario que Rollback, hace los cambios permanentes en las tablas.
Para evitar largos bloqueos de las tablas, las aplicaciones deben hacer confirmaciones
de los cambios realizados cada cierto nmero de registros (COMMIT), lo que liberar
los bloqueos existentes hasta ese momento.
Para ello, durante el proceso se harn confirmaciones peridicas de los datos
modificados (COMMIT), de forma que cuando el proceso falla en su ejecucin, el DB2
se encarga de restablecer las tablas a su estado en la ltima confirmacin,
deshaciendo todos los cambios no confirmados (ROLL BACK).
EXEC SQL
COMMIT
END-EXEC
6.1. Cursores
Hasta ahora solo se nos devolva dentro de cobol una fila. Los cursores nos permitirn
trabajar con consultas de ms de una fila. Declaracin:
EXEC SQL
DECLARE Nombre-cursor CURSOR FOR
SELECT
WHERE Campo = var
END-EXEC
PROCEDURE DIVISION
13
Software Factory Rafael Campillo Lorenzo.
Cceres
WORKING STORAGE
EXEC SQL
DECLARE Nombre-cursor CURSOR FOR
SELECT
FOR UPDATE OF Campo / s
END-EXEC
Si se hacen actualizaciones en la tabla, hay que indicrselo al cursor cuando se
declara.
PROCEDURE DIVISION
EXEC SQL
UPDATE Tabla
SET Campo = :valor
WHERE CURRENT OF Nombre-cursor
END-EXEC
Slo se puede modificar la ltima lectura, aunque el puntero apunte a la siguiente
El cursor nos devuelve la tabla virtual, y podemos trabajar sobre ella, pero la tratamos
como un fichero secuencial
14
Software Factory Rafael Campillo Lorenzo.
Cceres
Nos vamos a Excel y creamos un fichero nuevo. Abrimos desde Excel nuestro fichero
wks y seleccionamos todas las filas y las copiamos al fichero nuevo.
15
Software Factory Rafael Campillo Lorenzo.
Cceres
7. PROGRAMAS DE REARRANQUE Y
REPOSICIONAMIENTO. ARQUITECTURA BATCH.
Los grandes procesos Batch con gran nmero de actualizaciones DB2 plantean
problemas ya que mantienen durante largo tiempo bloqueos en las tablas modificadas,
impidiendo la concurrencia de otros procesos batch o del online. Por otra parte su
recuperacin en caso de abend o de rearranque de todo el sistema es muy costosa ya
que el DB2 debe restaurar sus tablas a la situacin inicial, bloqueando todas las
pginas que se hubieran utilizado.
Para evitar ambos problemas la aplicacin debe estar preparada para efectuar
confirmaciones de los cambios (inserciones, borrado, modificaciones) cada cierto
nmero de actualizaciones (COMMIT).
De esta manera se liberaran los bloqueos adquiridos hasta ese momento y se
suavizar la recuperacin del proceso.
Pero surge el problema del tratamiento de los objetos no DB2, tales como ficheros, ya
que el sistema no contempla de manera estndar su tratamiento.
Para esto se ha desarrollado una serie de utilidades que mediante la alocacin
dinmica de ficheros sincroniza la actualizacin de ficheros secuenciales de salida con
la de objetos DB2.
El DB2 deshace los cambios no confirmados en caso de error (ROLL BACK), por ello,
para reposicionar los procesos que slo actualizan datos en DB2, bastar con guardar
la ltima clave tratada y confirmada en los ficheros de entrada, para continuar desde
ella al rearrancar. Dicha clave se alamcena en una tabla de la arquitectura y se
recuperarara en un relanzamiento del programa para releer los ficheros de entrada o
las tablas hasta el ltimo COMMIT realizado antes de que se interrumpiera la
ejecucin.
16
Software Factory Rafael Campillo Lorenzo.
Cceres
Los ficheros de salida se han seguido generando y no podemos conocer cuales eran
sus datos antes. Por ello la arquitectura ha creado una serie de utilidades que
mediante la alocacin dinmica de ficheros sincroniza la actualizacin de ficheros
secuenciales de salida con la de los objetos DB2.
El sistema, por cada uno de los ficheros de salida, que se han definido en una de las
tablas de trabajo, genera tantos ficheros dinmicos como procesos de COMMIT se
hayan realizado y posteriormente realizar una unin de todos ellos.
Una vez concatenados los ficheros y antes de volver a pasar el proceso se deben
borrar. Para ello existe un JCL que ejecuta una CLIST llamada URCLEAR, pasndole
como en el caso anterior, el nombre del plan, numero de registros por COMMIT,
proceso y prefijo de los ficheros.
17
Software Factory Rafael Campillo Lorenzo.
Cceres
Esta CLIST ejecuta un plan que borra todos los ficheros y restaura el estado del
proceso a P sobre la tabla DAREPOS, estado que deja preparado el proceso para
ejecutarse.
Como en el caso anterior se crea y copia un fichero de PROFILE a fin de evitar
contenciones entre varios JCLs de ste tipo.
En caso de tener que relanzar el proceso es necesario borrar los ficheros del COMMIT
que no lleg a efectuar. Para ello se ejecuta una CLIST llamada URCLEARU a la que
se le pasa como parmetros el nombre del plan, numero de registros del COMMIT,
proceso, prefijo de los ficheros y el subsistema DB2. Si no se ha alocado ningn
fichero la CLIST no hace nada, razn por la que se debe ejecutar siempre antes del
programa de reposicionamiento.
Si no se realiza ste paso la aplicacin intentar alocar el fichero que ya existe, dando
un error
de catalogacin NOT CATLG 2 y por consiguiente un ABEND del proceso.
Por otra parte si se varia alguna caracterstica del fichero (como el tanto por ciento de
registros por COMMIT) al reutilizar el mismo fichero no se recoger el cambio
efectuado con lo cual se repetir el error anterior.
7.9. Esqueletos
Para facilitar la codificacin de los programas se disponen de unos esqueletos en 5
modalidades distintas segn utilicen ficheros secuenciales o tablas DB2, de entrada o
salida.
Dichos esqueletos son unas plantillas sobre las que se insertar la lgica de nuestro
programa. En ellos se controla todo el proceso de reposicionamiento y relanzamiento.
Se emiten COMMIT's cada 10.000 registros tratados. Por cada COMMIT se cierra el
fichero de salida actual y se abre otro nuevo. Si se produce el ABEND, el fichero de
salida queda incompleto y con un contenido impredecible. Antes de rearrancar el
18
Software Factory Rafael Campillo Lorenzo.
Cceres
proceso debe borrase el ltimo fichero utilizado porque se intentar crear de nuevo,
obteniendo un error de catlogo puesto que ya existe.
Al rearrancar, se relee el fichero de entrada a partir de los apuntadores guardados en
DAREPOS al hacer el ltimo COMMIT, y se contina grabando en el fichero de salida
correspondiente.
@-------
| START |
$-------%
10k 20k 30k 40k 50k 60k
FIC [ - - - -_- - - - -_- - - - -_- - - - -_- - - - -_- - - - -_- - -
. . . .
. . . .
. . . .
. . . .
C C C A
S [--------_---------_---------_-----_
X1 Z1 Z2 Z3
X2 X3 X4----]
C = Punto de COMMIT
A = Punto de ABEND
X = Abre fichero de salida
Z = Cierra fichero de salida
@-------
|RESTART| Previo borrado del ltimo fichero de COMMIT (4)
$-------%
R = Punto de RESTART
C = Punto de COMMIT
F = Punto de FINAL
X = Abre fichero de salida
Z = Cierra fichero de salida
Durante la codificacin hay que tener en cuenta que cada vez que se realiza un
COMMIT todos los cursores se cierran (aunque no se haya realizado CLOSE); por eso
si se ha abierto alguno que no pertenezca al reposicionamiento, hemos de recordar
abrirlo de nuevo.
Todos los switch que controlen el proceso deben guardarse (en la tabla DAREPOS)
porque si hay relanzamiento se debe saber qu parte del programa se debe ejecutar.
Si se utilizan tablas internas para validaciones, el primer paso al rearrancar, debe ser
cargarlas de nuevo. Se trata de reconstruir la situacin al punto donde se qued.
19
Software Factory Rafael Campillo Lorenzo.
Cceres
Debe tenerse en cuenta que si se utilizan en el programa tablas internas en las que se
guarden acumuladores o datos intermedios, no se dispondr de ellos en el momento
del relanzamiento. Entonces ser necesario utilizar una tabla DB2 y trabajar con ella
de la misma forma que con los cursores de reposicionamiento. Podra ser utilizada la
tabla DAREPOS si el volumen de los datos lo permite.
Los programas Batch con reposicionamiento reciben como entrada los parmetros
necesarios para su control. No son parmetros de aplicacin, si necesitase otros
parmetros para su proceso estos debern pasarse al programa mediante ficheros de
entrada. Los parmetros para el control del reposicionamiento son:
PLAN Nombre del plan a ejecutar con reposicionamiento. Debera corresponder con el
propio.
NUMPROC Nmero del proceso asociado a ese Job. Normalmente siempre es '1' salvo
el caso de programas que bifurcan y tratan tablas distintas segn alguna entrada que
lean. En este caso se pueden lanzar dos o ms Jobs en paralelo con el mismo
programa/plan pero distinto Nmero de Proceso para poder reposicionarse cada cual
correctamente e independientemente del otro Job.
POOL Pool de discos. Este parmetro es opcional, si no se pone toma por defecto
SYSDA.
Ahora se han de preparar las tablas para la ejecucin. Para ello se han de obtener y
modificar los JCL's correspondientes.
****************************************************************************************
***
****************************************************************************************
***
* PROGRAMA: LQBBN01
*
* FECHA CREACION: 07-11-2006
*
* AUTOR: INSA
*
* INSTALACION: CLIENTE.ISBAN.
*
* DESCRIPCION: EL PROCESO DAR NUEVAS ALTAS EN LA TABLA DE SALDOS
* VALOR PARA LIQUIDACIN DE CONTRADOS DE PRSTAMOS.(SALDO_VALOR_
20
Software Factory Rafael Campillo Lorenzo.
Cceres
* _PTM).
* A PARTIR DEL FICHERO DE ALTAS DEL DA(ALTAS1),ORDENADO POR
* CONTRATO, Y DEL FICHERO DE CONTRATOS QUE LIQUIDAN POR EL NUEVO
* SISTEMA(CONTBA3) ORDENADO POR CONTRATO, SELECCIONAMOS LAS ALTAS
* ENFRENTANDO AMBOS FICHEROS. CON CADA ALTA VLIDA(ENCONTRADA EN
* EL FICHERO DE CONTRATOS) GENERAMOS UN REGISTRO EN LA TABLA
* SALDO_VALOR_PTM CON EL SALDO A 0 POR CADA POSICIN LEDA EN EL
* FICHERO CONTBA3. LA PREESISTENCIA DEL REGISTRO QUE SE VA A DAR
* DE ALTA EN SALDO_VALOR_PTM IMPLICA UN ERROR, POR LO QUE SE
* GRABA EN EL FICHERO DE SALIDA DE ERRORES (ERRALTA)
*
****************************************************************************************
***
*
* RUTINAS:
* RUTINA1: XX_CANCELACION_PROCESOS_BATCH:
*
* CANCELAR LA EJECUCION DE UN PROGRAMA POR
* CUALQUIER TIPO DE ERROR
*
* RUTINA2: UR0000:
*
* MUEVE LOS PARMETROS JCL A LA RURCOMM, Y
* ACCEDE AL DB2
*
****************************************************************************************
**
*
* TABLAS:
* TABLA1: SALDO_VALOR_PTM
*
* SALDOS VALOR PARA LIQUIDACIN DE CONTRATOS
* DE PRSTAMOS
*
****************************************************************************************
***
****************************************************************************************
***
*
* MODIFICACIONES
* ----------------
*
* USUARIO FECHA DESCRIPCION
* ------- ----- -----------------------
* XXXXXXX DD-MM-AA XXXXXXXXXXXXXXXXXXXXXXX
*----------------------------------------------------------------
****************************************************************************************
***
****************************************************************************************
***
**************************
IDENTIFICATION DIVISION.
**************************
PROGRAM-ID. LQBBN01.
AUTHOR. RAFITASUPERSTAR.
DATE-WRITTEN. 10/11/2006.
DATE-COMPILED. 13/11/2006.
*################################################################*
*#
#*
*# ENVIRONMENT DIVISION
*#
#*
*################################################################*
**************************
ENVIRONMENT DIVISION.
**************************
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
21
Software Factory Rafael Campillo Lorenzo.
Cceres
*################################################################*
*#
#*
*# DATA DIVISION
#*
*#
#*
*################################################################*
***************************************************
DATA DIVISION.
***************************************************
FILE SECTION.
FD CONTBA3
LABEL RECORD ARE STANDARD
BLOCK CONTAINS 0 RECORDS
RECORDING MODE IS F.
01 REGCONTBA3 PIC X(280).
FD ALTAS1
LABEL RECORD ARE STANDARD
BLOCK CONTAINS 0 RECORDS
RECORDING MODE IS F.
01 REGALTAS1 PIC X(140).
FD ERRALTA
LABEL RECORD ARE STANDARD
BLOCK CONTAINS 0 RECORDS
RECORDING MODE IS F.
01 REGERRALTA PIC X(147).
***************************************************
WORKING-STORAGE SECTION.
***************************************************
****************************************************************************************
**
*** COPY DE MENSAJES DE ERROR PARA PROGRAMAS BATCH QUE
*** USEN " REPOSICIONAMIENTO "
****************************************************************************************
**
COPY URMENSA.
****************************************************************************************
***
*** COPY QUE CONTIENE LOS " SWITCHES " UTILIZADOS
*** POR PROGRAMAS BATCH QUE UTILIZAN REPOSICIONAMIENTO.
****************************************************************************************
***
COPY URSWITCH.
****************************************************************************************
***
*** COPY QUE CONTIENE LOS CAMPOS DE TRABAJO UTILIZADOS
*** EN PROGRAMAS BATCH QUE UTILIZAN REPOSICIONAMIENTO.
****************************************************************************************
***
22
Software Factory Rafael Campillo Lorenzo.
Cceres
****************************************************************************************
***
*** CLAVES DE RELANZAMIENTO Y DE REPOSICIN PARA EL
*** FICHERO CONTBA3 Y ALTAS1
En caso de que un programa vea cancelada su ejecucin y tengamos que relanzarlo, tenemos
que releer el fichero maestro hasta el punto guardado tras el ltimo COMMIT efectuado antes de
su cada. La cave guardada en ese ltimo COMMIT ser CLAVE-ALTAS1, que es la clave de
reposicionamiento, y la clave temporal que ser ir comparando con sta en la relectura del
maestro, ser UR-CLAVE-RELANZAMIENTO.
01 UR-CLAVE-RELANZAMIENTO.
10 IDEMPR-RELANZAMIENTO PIC X(4).
10 IDCENT-RELANZAMIENTO PIC X(4).
10 IDPROD-RELANZAMIENTO PIC X(3).
10 IDCONTR-RELANZAMIENTO PIC X(7).
01 CLAVE-ALTAS1.
10 IDEMPR-ALTAS1 PIC X(4).
10 IDCENT-ALTAS1 PIC X(4).
10 IDPROD-ALTAS1 PIC X(3).
10 IDCONTR-ALTAS1 PIC X(7).
01 CLAVE-CONTBA3.
10 IDEMPR-CONTBA3 PIC X(4).
10 IDCENT-CONTBA3 PIC X(4).
10 IDPROD-CONTBA3 PIC X(3).
10 IDCONTR-CONTBA3 PIC X(7).
****************************************************************************************
***
*--- ESTRUCTURA DE LQCBN02-TAB-SALDOS-VALOR:
01 TAB-SALDOS-VALOR-TRA.
02 REG-SALDOS-VALOR-TRA OCCURS 2.
05 ELE-SALDOS-VALOR-TRA OCCURS 600.
10 FEC-VALOR-TRA PIC S9(8) COMP-3.
10 DIAS-AVX-TRA PIC S9(8) COMP-3.
10 DIAS-AVB-TRA PIC S9(3) COMP-3.
10 SALDO-VALOR-TRA PIC S9(13)V9(2) COMP-3.
****************************************************************************************
***
*** INTRODUCIR AQUI LA COPY QUE CONTIENE LOS CAMPOS
*** DE LOS FICHEROS DE ENTRADA Y SALIDA
****************************************************************************************
***
23
Software Factory Rafael Campillo Lorenzo.
Cceres
****************************************************************************************
***
*** INCLUDE DE LAS COPYS PARA REPOSICIONAMIENTO
*** " RURCOMM " Y " RUROPER "
****************************************************************************************
***
*
EXEC SQL INCLUDE URCOPYS END-EXEC.
****************************************************************************************
***
*** INCLUDE DE LA COPY DE LA DCLGEN DE " DAREPOS ".
*** (TABLA UTILIZADA PARA EL REPOSICIONAMIENTO EN BATCH)
****************************************************************************************
***
*
EXEC SQL INCLUDE URDCLGEN END-EXEC.
****************************************************************************************
***
*** COPY QUE INCLUYE EL CURSOR FOR UPDATE DE DAREPOS.
*** TABLA UTILIZADA PARA EL REPOSICIONAMIENTO EN BATCH.
****************************************************************************************
***
*
EXEC SQL INCLUDE URCURSOR END-EXEC.
*------------------------------------------------------------
* TABLA DE ACTUALIZACIN SALDO_VALOR_PTM
*------------------------------------------------------------
EXEC SQL
INCLUDE D3445800
END-EXEC.
*------------------------------------------------------------
* SWITCHES
*------------------------------------------------------------
01 SW-SWITCHES.
05 SW-FIN-ALTAS1 PIC 9(1).
88 SW-SI-FIN-ALTAS1 VALUE 1.
88 SW-NO-FIN-ALTAS1 VALUE 0.
24
Software Factory Rafael Campillo Lorenzo.
Cceres
25
Software Factory Rafael Campillo Lorenzo.
Cceres
*------------------------------------------------------------
* DEFINICIN DE LOS CAMPOS DE LOS FICHEROS
*------------------------------------------------------------
01 CONT-CONTBA3 PIC 9(9) VALUE ZEROS.
01 CONT-ALTAS1 PIC 9(9) VALUE ZEROS.
01 CONT-SALDO-VALOR-PTM PIC 9(9) VALUE ZEROS.
01 CONT-ERRALTA PIC 9(9) VALUE ZEROS.
*------------------------------------------------------------
* TABLAS INTERNAS
*------------------------------------------------------------
01 W-POSICION-ALTA PIC X(03).
01 W-POSICIONES.
05 W-POSICION OCCURS 8 PIC X(03).
******************
LINKAGE SECTION.
******************
En esta variable de linkage se recibirn los datos pasados en PARMETROS en el JCL
a travs de la copy RURCOMM.
01 PARMLIST.
05 PARM-LNG PIC XX.
05 PARAMETRO PIC X(200).
************************************
PROCEDURE DIVISION USING PARMLIST.
************************************
********************************************
* RUTINA-PRINCIPAL.
********************************************
Algo que llamar la atencin pero que no ha de asustarnos es el hecho de que se usen
dos inicios y dos finales en la rutina principal del programa. Esto tiene su sentido
porque utilizamos un inicio y un final del esqueleto que en el que se controlan temas
relacionados con el reposicionamiento. Esto no implica que la lgica de nuestro
programa encaje exactamente con A100-INICIO-PROGRAMA, A400-PROCESO-
PROGRAMA Y S900-FIN, ya que iremos entremezclando nuestra lgica con la del
esqueleto con lo que es necesario conocer qu hace el esqueleto para encajar nuestro
programa.
PERFORM S100-INICIO
THRU S100-INICIO-EXIT.
*-----------
PERFORM A100-INICIO-PROGRAMA
THRU A100-INICIO-PROGRAMA-EXIT.
PERFORM A400-PROCESO-PROGRAMA
THRU A400-PROCESO-PROGRAMA-EXIT.
PERFORM A900-FIN-PROGRAMA
THRU A900-FIN-PROGRAMA-EXIT.
26
Software Factory Rafael Campillo Lorenzo.
Cceres
*-----------
PERFORM S900-FIN
THRU S900-FIN-EXIT.
STOP RUN.
****************************************************************************************
**
***
*** S100-INICIO
***
****************************************************************************************
**
S100-INICIO.
*---------------------------------------------------------------*
*--- INICIALIZAR VARIABLES DE PROCESO (COPY URSWITCH)
*---------------------------------------------------------------*
SET NO-HAY-ERROR-PROCESO TO TRUE.
SET NO-FIN-PROCESO TO TRUE.
SET NO-RELANZAMIENTO TO TRUE.
SET NO-FIN-DATOS TO TRUE.
SET NO-ERROR TO TRUE.
MOVE ZEROS TO CA-COMMIT.
*---------------------------------------------------------------*
*--- ACTUALIZACION DE DATOS DE RURCOMM CON LOS DATOS DE
*--- PARAMETRO Y DAPROCBATCH.
*----------------------------------------------------------------*
EXEC SQL
OPEN REP
27
Software Factory Rafael Campillo Lorenzo.
Cceres
END-EXEC.
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-OPEN-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE.
EXEC SQL
FETCH REP INTO :RUR-PLANNAME,
:RUR-PROCES,
:RUR-ESTADO,
:RUR-NUMCOMM,
:RUR-PUNTEROS
END-EXEC.
*
EVALUATE TRUE
WHEN DB2-OK
*---------------------------------------------------------------*
*--- "I" : ESTADO DE EJECUCIN MEDIANTE ARSB (VIA ONLINE)
*--- SE HA RESERVADO EL NUMERO DE PROCESO PARA LA
*--- EJECUCION.
*---------------------------------------------------------------*
IF RUR-ESTADO = CA-ESTADO-I
MOVE SPACES TO UR-VALOR-REGISTRO-TEXT
MOVE 254 TO UR-VALOR-REGISTRO-LEN
MOVE ZEROES TO UR-CEROS
EXEC SQL
UPDATE DAREPOS
SET RUR_ESTADO = :CA-ESTADO-C,
RUR_NUMCOMM = :UR-CEROS,
RUR_PUNTEROS = :UR-VALOR-REGISTRO
WHERE CURRENT OF REP
END-EXEC
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-UPDA-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
Antes de comenzar se debe hacer una primera confirmacin (COMMIT) para liberar el
bloqueo sobre la tabla DAREPOS. sta no contabiliza en el proceso del nmero de
28
Software Factory Rafael Campillo Lorenzo.
Cceres
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-COMM-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
*---------------------------------------------------------------------------------------
*--- "P" : IMPLICA QUE LOS FICHEROS RESULTANTES DEL
*--- PROCESO HAN SIDO BORRADOS Y SE PUEDE EJECUTAR
*--- DE NUEVO EL PLAN.
*---------------------------------------------------------------------------------------
Estado Inicial (P).
Un proceso est en estado inicial P cuando su ltima ejecucin se complet
correctamente, sin ningn error. Implica que el proceso se encuentra en condiciones
de ser relanzado, los ficheros resultantes del ltimo proceso han sido borrados y se
puede ejecutar de nuevo el plan. Si el programa de reposicionamiento comprueba que
el proceso se encuentra en estado inicial NO REPOSICIONAR SU ENTRADA, puesto
que debe comenzar el proceso desde el principio.
Si la consulta a la tabla DAREPOS indica que el proceso se encuentra en estado inicial
(P), se modificar para inicializar el nmero de validaciones a cero. Adems se pondr
el switch de reposicionamiento a N, para que el proceso comience desde el principio.
(SW-RELANZAMIENTO _ NO-RELANZAMIENTO).
IF RUR-ESTADO = CA-ESTADO-P
MOVE SPACES TO UR-VALOR-REGISTRO-TEXT
MOVE 254 TO UR-VALOR-REGISTRO-LEN
MOVE ZEROES TO UR-CEROS
EXEC SQL
UPDATE DAREPOS
SET RUR_ESTADO = :CA-ESTADO-C,
RUR_NUMCOMM = :UR-CEROS,
RUR_PUNTEROS = :UR-VALOR-REGISTRO
WHERE CURRENT OF REP
END-EXEC
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-UPDA-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
29
Software Factory Rafael Campillo Lorenzo.
Cceres
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-COMM-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
*---------------------------------------------------------------------------------------
*--- "C" : IMPLICA QUE SE ESTAN REALIZANDO COMMITS
* O QUE SE ES RELANZAMIENTO EN CASO DE NO SER LA PRIMERA VEZ
*---------------------------------------------------------------------------------------
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-CLOSE-CUR')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
ELSE
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-ESTADO-DAR')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
30
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCA('SQLCA')
END-FUN
END-IF
END-IF
END-IF
WHEN DB2-CLV-NOT-FOUND
*---------------------------------------------------------------*
*--- SI NO EXISTE EN DAREPOS SE CREA UNA ENTRADA
*--- CON ESTADO "C" GUARDANDO PUNTEROS.
*---------------------------------------------------------------*
EXEC SQL
INSERT INTO DAREPOS
(RUR_PLANNAME,
RUR_PROCES,
RUR_ESTADO,
RUR_NUMCOMM,
RUR_PUNTEROS)
VALUES (:CA-PLANNAME,
:UR-PROCESO,
:CA-ESTADO-C,
:UR-CEROS,
:UR-VALOR-REGISTRO)
END-EXEC
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-INSERT-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-COMM-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-FETCH-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-INICIO')
SQLCA('SQLCA')
31
Software Factory Rafael Campillo Lorenzo.
Cceres
END-FUN
END-EVALUATE.
S100-INICIO-EXIT.
EXIT.
****************************************************************************************
*********
*
* A100-INICIO-PROGRAMA.
*
* SE INICIALIZAN TODAS LAS VARIABLES PARA CAMPOS DE LA FUNCIN
* DE ERRORES Y LOS CAMPOS DE ESTADSTICAS. ADEMS SE ABREN LOS
* FICHEROS CONTBA3 Y ALTAS1 EN MODO ENTRADA Y EL FICHERO ERRALTA
* EN MODO DE SALIDA, Y SE LEE EL PRIMER REGISTRO DE CONTBA3 Y
* ALTAS1.
*
****************************************************************************************
*********
A100-INICIO-PROGRAMA.
*---------------------------------------------------------------*
*--- INICIALIZAR DCLGEN DE LAS TABLAS Y CAMPOS DE WORKING
*---------------------------------------------------------------*
INITIALIZE DCLSALDO-VALOR-PTM
WK-ERROR-DB2
WK-ERROR-RUTINA
WK-ERROR-TABLA-MEMORIA
WK-ERROR-FICHERO
WK-ERROR-OTROS
CONT-CONTBA3
CONT-ALTAS1
CONT-ERRALTA
CONT-SALDO-VALOR-PTM
Para el caso de programas que utilizan ficheros de entrada (en nuestro caso CONTBA3
y el maestro: ALTAS1) tienen que controlar mediante un switch (SI-RELANZAMIENTO)
si es la primera vez que entra al programa o es relanzamiento porque haya abendado
anteriormente el proceso. En ste caso deber leerse el fichero desde el principio hasta
el registro grabado en DAREPOS correspondiente al ltimo COMMIT.
*---------------------------------------------------------------*
*--- SE ABREN LOS FICHEROS
*---------------------------------------------------------------*
PERFORM A150-ABRIR-FICHEROS
THRU A150-ABRIR-FICHEROS-EXIT
*---------------------------------------------------------------*
*--- SI ENTRA AL PROGRAMA POR RELANZAMIENTO PORQUE HAYA
*--- CASCADO EL PROCESO, DEBE LEERSE EL FICHERO DE ENTRADA
*--- DESDE EL PRINCIPIO HASTA EL ULTIMO REGISTRO GRABADO
*--- EN EL ULTIMO COMMIT, GRABADO EN "DAREPOS".
*---------------------------------------------------------------*
IF SI-RELANZAMIENTO
PERFORM A110-RELEER-FICH-ENTRADA THRU
A110-RELEER-FICH-ENTRADA-EXIT
UNTIL FIN-DATOS
*---------------------------------------------------------------*
*--- ENTRA A LEER LOS FICHEROS DE ENTRADA POR PRIMERA VEZ
*---------------------------------------------------------------*
ELSE
MOVE LOW-VALUE TO CLAVE-ALTAS1
CLAVE-CONTBA3
PERFORM 9100-LEER-FICH-ALTAS1
THRU 9100-LEER-FICH-ALTAS1-EXIT
PERFORM 9200-LEER-FICH-CONTBA3
THRU 9200-LEER-FICH-CONTBA3-EXIT
END-IF.
32
Software Factory Rafael Campillo Lorenzo.
Cceres
A100-INICIO-PROGRAMA-EXIT.
EXIT.
*************************************************************
***
*** A110-RELEER-FICH-ENTRADA
***
*************************************************************
A110-RELEER-FICH-ENTRADA.
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
END-IF
*--- EL REGISTRO LEIDO ES MAYOR AL ULTIMO LEIDO ANTES DE
*--- CASCAR EL PROGRAMA, QUE ESTA GRABADO EN 'DAREPOS'.
**************************************************************************************
* A150-ABRIR-FICHEROS.
*
* SE ABREN LOS FICHEROS CONTBA3 Y ALTAS1 EN MODO ENTRADA Y EL
* FICHERO ERRALTA EN MODO DE SALIDA Y SE COMPRUEBA QUE SE HA
* REALIZADO LA OPERACIN CORRECTAMENTE. EN CASO CONTRARIO SE
* LLAMA AL PRRAFO 9300-ERROR-FICHERO
*
**************************************************************************************
A150-ABRIR-FICHEROS.
OPEN INPUT CONTBA3
ALTAS1
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
33
Software Factory Rafael Campillo Lorenzo.
Cceres
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF.
A150-ABRIR-FICHEROS-EXIT.
EXIT.
****************************************************************************************
**
* A400-PROCESO-PROGRAMA.
*
* PROCESO PRINCIPAL DEL PROGRAMA. SE REALIZAR UN PROCESO CONTNUO
* EN EL QUE SLO SE SALDR CUANDO SE LLEGUE AL FINAL DEL FICHERO
* DE ALTAS1 OR CONTBA3, O SE DETECTE ALGN ERROR MENCIONADO A
* CONTINUACIN QUE INDIQUE EL FINAL DEL PROGRAMA
*
**************************************************************************************
A400-PROCESO-PROGRAMA.
Se van alocando los ficheros de salida dinmicamente por cada commit que se realiza.
PERFORM S400-PROCESO-COMMIT
THRU S400-PROCESO-COMMIT-EXIT
UNTIL FIN-PROCESO OR SI-ERROR.
*********************************************************************
***
*** S400-PROCESO-COMMIT
***
*********************************************************************
S400-PROCESO-COMMIT.
En este bucle externo se incluirn las siguientes tareas, adems de las propias de la
aplicacin.
Ext. 1. Iniciacin del contador de registros procesados a 1.
Ext. 2. Alocacin de los ficheros de salida, si existen en el proceso.
Se har una llamada a la rutina UR0000 con el parmetro RUR-NEW para alocar los
ficheros de salida. Formato:
34
Software Factory Rafael Campillo Lorenzo.
Cceres
*---------------------------------------------------------------------------------------
*--- ABRIMOS EL FICHERO DE SALIDA PARA EL REPOSICIONAMIENTO.
*---------------------------------------------------------------------------------------
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
*---------------------------------------------------------------------------------------
*--- INICIALIZA CONTADOR DE REGISTROS A 1
*---------------------------------------------------------------------------------------
35
Software Factory Rafael Campillo Lorenzo.
Cceres
PERFORM S410-UNIDAD-COMMIT
THRU S410-UNIDAD-COMMIT-EXIT
UNTIL UR-CONT-REG GREATER CA-NUMREG OR
FIN-PROCESO OR SI-ERROR
*---------------------------------------------------------------------------------------
*--- CERRAR FICHERO SALIDA ERRALTA
*---------------------------------------------------------------------------------------
CLOSE ERRALTA
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
*---------------------------------------------------------------------------------------
*--- ACTUALIZAR NUMERO DE COMMITS Y PUNTEROS EN DAREPOS.
*---------------------------------------------------------------------------------------
*---------------------------------------------------------------------------------------
*--- MOVER LOS CAMPOS CLAVE DEL FICHERO A LOS CAMPOS DE WORKING
*--- PARA REPOSICIONAMIENTO: UR-CLAVE-REPOSIC.
*---------------------------------------------------------------------------------------
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-UPDA-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-PROC-COMM')
SQLCA('SQLCA')
END-FUN
END-EVALUATE.
*---------------------------------------------------------------------------------------
*--- REALIZAMOS COMMIT:
*--- SE RECOMIENDA CONTROLAR EL CODIGO DE RETORNO DE LA SENTENCIA
*--- COMMIT Y ABENDAR EL PROGRAMA EN CASO DE SQLCODE DISTINTO DE
*--- CERO, YA QUE LOS DATOS PUEDEN QUEDAR INCONSISTENTES.
*---------------------------------------------------------------------------------------
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-PROC-COMM')
36
Software Factory Rafael Campillo Lorenzo.
Cceres
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-PROC-COMM')
SQLCA('SQLCA')
END-FUN
END-EVALUATE
*---------------------------------------------------------------------------------------
*--- SI NO HAY ERROR VUELVE A LEER EL FICHERO DE ENTRADA
*---------------------------------------------------------------------------------------
IF SI-ERROR OR FIN-PROCESO
CONTINUE
ELSE
PERFORM 9100-LEER-FICH-ALTAS1
THRU 9100-LEER-FICH-ALTAS1-EXIT.
***
S400-PROCESO-COMMIT-EXIT.
EXIT.
****************************************************************
***
*** S410-UNIDAD-COMMIT
***
****************************************************************
S410-UNIDAD-COMMIT.
PERFORM 2100-PARRAFO-ALTAS
THRU 2100-PARRAFO-ALTAS-EXIT
PERFORM 9200-LEER-FICH-CONTBA3
THRU 9200-LEER-FICH-CONTBA3-EXIT
ELSE
SET SW-NO-LEE-ALTAS1 TO TRUE
PERFORM 9200-LEER-FICH-CONTBA3
THRU 9200-LEER-FICH-CONTBA3-EXIT
UNTIL (CLAVE-ALTAS1 LESS THAN CLAVE-CONTBA3) OR
(CLAVE-ALTAS1 EQUAL CLAVE-CONTBA3)
END-IF
END-IF
*---------------------------------------------------------------------------------------
----------*
*--- CUANDO EL CONTADOR DE REGISTROS SEA MAYOR AL CAMPO CA-NUMREG
*--- DE "RURCOMM" : CIERRA EL FICHERO, HACE COMMIT Y ACTUALIZA DAREPOS.
*---------------------------------------------------------------------------------------
----------*
ELSE
IF SW-SI-LEE-ALTAS1
PERFORM 9100-LEER-FICH-ALTAS1
37
Software Factory Rafael Campillo Lorenzo.
Cceres
THRU 9100-LEER-FICH-ALTAS1-EXIT
END-IF
END-IF.
S410-UNIDAD-COMMIT-EXIT.
EXIT.
*************************************************************
***
*** A900-FIN-PROGRAMA
***
*************************************************************
A900-FIN-PROGRAMA.
*---------------------------------------------------------------*
*--- CERRAR FICHEROS DE ENTRADA
*---------------------------------------------------------------*
PERFORM 3100-CERRAR-FICHEROS
THRU 3100-CERRAR-FICHEROS-EXIT
PERFORM 9500-ESTADISTICAS
THRU 9500-ESTADISTICAS-EXIT.
A900-FIN-PROGRAMA-EXIT.
EXIT.
*******************************************************************
***
*** S900-FIN
***
*******************************************************************
S900-FIN.
EXEC SQL
UPDATE DAREPOS
SET RUR_ESTADO = :CA-ESTADO-F
WHERE RUR_PLANNAME = :CA-PLANNAME
AND RUR_PROCES = :UR-PROCESO
END-EXEC.
EVALUATE TRUE
WHEN DB2-OK CONTINUE
WHEN OTHER
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('UR-MSG-TIPO-ERROR')
DESCRIPCION('UR-MSG-UPDA-REP')
PROGRAMA('CA-LQBBN01')
PARRAFO('UR-MSG-FIN')
SQLCA('SQLCA')
END-FUN
38
Software Factory Rafael Campillo Lorenzo.
Cceres
END-EVALUATE.
GOBACK.
***
S900-FIN-EXIT.
EXIT.
**************************************************************************************
* 2100-PARRAFO-ALTAS
*
* POR CADA POSICIN SE HA DE DAR UN ALTA EN LA TABLA SALDO_VALOR
* _PTM, COM EL CAMPO POSICIONES LQYCONTL-OSICIONES ES DE 24
* CARACTERES Y CADA POSICIN EST DEFINIDA CON 3 CARACTERES,COMO
* MXIMO SERN 8 LAS POSICIONES QUE SE PODRN DAR DE ALTA
**************************************************************************************
2100-PARRAFO-ALTAS.
PERFORM 2150-POSICIONES
THRU 2150-POSICIONES-EXIT
UNTIL IND-I GREATER THAN CN-OCHO
OR W-POSICION(IND-I) EQUAL SPACES.
2100-PARRAFO-ALTAS-EXIT.
EXIT.
*************************************************************************************
* 2150-POSICIONES
*
* COMO MXIMO SE DAN DE ALTA 8 POSICIONES EN LA TABLA
* SALDO_VALOR_PTM
*************************************************************************************
2150-POSICIONES.
PERFORM 2200-ESCR-SALDO-V-PTM
THRU 2200-ESCR-SALDO-V-PTM-EXIT
ADD 1 TO IND-I.
2150-POSICIONES-EXIT.
**************************************************************************************
* 2200-ESCR-SALDO-V-PTM
*
* SE ESCRIBE EN LA TABLA SALDO_VALOR_PTM UN REGISTRO CON EL
* SALDO A 0 POR CADA POSICIN LEDA EN EL FICHERO CONTBA3
**************************************************************************************
2200-ESCR-SALDO-V-PTM.
39
Software Factory Rafael Campillo Lorenzo.
Cceres
*---
MOVE LQYCONTL-IDEMPR TO E4294-IDEMPR
EXEC SQL
INSERT INTO SALDO_VALOR_PTM
(E4294_IDCENT,
E4294_IDPROD,
E4294_IDCONTR,
E4294_TIPMVTO,
E4294_CODMONSW,
E4294_NUMERSEC,
E4294_IDSTIPRO,
E4294_COESTREF,
E4294_FHSALV,
E4294_SALDCTA,
E4294_IMPSALV,
E4294_IDEMPR)
VALUES
(:E4294-IDCENT,
:E4294-IDPROD,
:E4294-IDCONTR,
:E4294-TIPMVTO,
:E4294-CODMONSW,
:E4294-NUMERSEC,
:E4294-IDSTIPRO,
:E4294-COESTREF,
:E4294-FHSALV,
:E4294-SALDCTA,
:E4294-IMPSALV,
:E4294-IDEMPR)
END-EXEC
EVALUATE TRUE
WHEN DB2-OK
* ACUMULAR PARA ESTADISTICAS
ADD CN-UNO TO CONT-SALDO-VALOR-PTM
WHEN DB2-CLV-DUPLI-INSERT
PERFORM 2300-ESCR-ERR-ALTA
THRU 2300-ESCR-ERR-ALTA-EXIT
WHEN OTHER
MOVE CA-ERROR-INSERT TO WK-DESCRIPCION
MOVE CA-ESCRIBIR-SALDO-PTM TO WK-PARRAFO
MOVE CA-SALDO-VALOR-PTM TO WK-TABLA-DB2
MOVE DCLSALDO-VALOR-PTM TO WK-DATOS-ACCESO
PERFORM 9400-ERROR-DB2
THRU 9400-ERROR-DB2-EXIT
END-EVALUATE.
2200-ESCR-SALDO-V-PTM-EXIT.
EXIT.
**************************************************************************************
* 2300-ESCR-ERR-ALTA
*
* LA PREEXISTENCIA DEL REGISTRO QUE SE VA A DAR DE ALTA EN
* SALDO_VALOR_PTM IMPLICA UN ERROR, POR LO QUE SE GRABA EN EL
* FICHERO DE SALIDA DE ERRORES (ERRALTA)
**************************************************************************************
2300-ESCR-ERR-ALTA.
40
Software Factory Rafael Campillo Lorenzo.
Cceres
**************************************************************************************
* 3100-CERRAR-FICHEROS.
*
* SE CIERRAN LOS TRES FICHEROS (CONTBA3,ALTAS1 Y ERRALTA)
* Y SE COMPRUEBA QUE SE HAN CERRADO CORRECTAMENTE,EN CASO
* CONTRARIO SE PROCEDE AL TRATAMIENTO DE ERROR DE FICHERO
*
**************************************************************************************
3100-CERRAR-FICHEROS.
CLOSE CONTBA3
ALTAS1
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
.
3100-CERRAR-FICHEROS-EXIT.
EXIT.
**************************************************************************************
* 9100-LEER-FICH-ALTAS1
*
* SE REALIZA LA LECTURA DEL FICHERO DE ALTAS1,ACUMULANDO LAS
* ESTADSTICAS Y TRATANDO SI PROCEDE UN POSIBLE ERROR EN LA
* LECTURA
**************************************************************************************
9100-LEER-FICH-ALTAS1.
41
Software Factory Rafael Campillo Lorenzo.
Cceres
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF.
9100-LEER-FICH-ALTAS1-EXIT.
EXIT.
*************************************************************************************
* 9200-LEER-FICH-CONTBA3
*
* SE REALIZA LA LECTURA DEL FICHERO CONTBA3, ACUMULANDO LAS
* ESTADSTICAS Y TRATANDO SI PROCEDE UN POSIBLE ERROR EN LA
* LECTURA
**************************************************************************************
9200-LEER-FICH-CONTBA3.
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF.
9200-LEER-FICH-CONTBA3-EXIT.
EXIT.
**************************************************************************************
* 9300-ERROR-FICHERO
*
* SE GUARDA EL TIPO DE ERROR Y SE LLAMA A LA RUTINA:
* XX_CANCELACION_PROCESOS_BATCH
**************************************************************************************
9300-ERROR-FICHERO.
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('WK-TIPO-ERROR')
COD_RETORNO('WK-COD-RETORNO')
RESPONSABLE('WK-RESPONSABLE')
DESCRIPCION('WK-DESCRIPCION')
PROGRAMA('WK-PROGRAMA')
PARRAFO('WK-PARRAFO')
DDNAME('WK-DDNAME')
FILE_STATUS('WK-FILE-STATUS')
DATOS_REGISTRO('WK-DATOS-REGISTRO')
END-FUN
.
9300-ERROR-FICHERO-EXIT.
EXIT.
**************************************************************************************
42
Software Factory Rafael Campillo Lorenzo.
Cceres
* 9400-ERROR-DB2
*
* SE GUARDA EL TIPO DE ERROR Y SE LLAMA A LA RUTINA:
* XX_CANCELACION_PROCESOS_BATCH
**************************************************************************************
9400-ERROR-DB2.
MOVE CA-TIPO-ERROR-D TO WK-TIPO-ERROR
MOVE CA-RESPONSABLE TO WK-RESPONSABLE
MOVE SQLCODE TO WK-SQLCA
EXEC-FUN XX_CANCELACION_PROCESOS_BATCH
TIPO_ERROR('WK-TIPO-ERROR')
RESPONSABLE('WK-RESPONSABLE')
DESCRIPCION('WK-DESCRIPCION')
PROGRAMA('WK-PROGRAMA')
PARRAFO('WK-PARRAFO')
SQLCA('WK-SQLCA')
TABLA_DB2('WK-TABLA-DB2')
DATOS_ACCESO('WK-DATOS-ACCESO')
END-FUN
.
9400-ERROR-DB2-EXIT.
EXIT.
**************************************************************************************
* 9500-ESTADISTICAS
*
* SE MUESTRAN LAS ESTADISTICAS DE REGISTROS LEIDOS Y ESCRITOS
**************************************************************************************
9500-ESTADISTICAS.
DISPLAY CA-ASTERISCO
DISPLAY CA-PROGRAMA-LQBBN01
DISPLAY WK-LECTURAS-CONTBA3
DISPLAY WK-LECTURAS-ALTAS1
DISPLAY WK-ESCRITURAS-ERRALTA
DISPLAY WK-ESCRITURAS-SALDO-VALOR-PTM
DISPLAY CA-ASTERISCO.
9500-ESTADISTICAS-EXIT.
EXIT.
43
Software Factory Rafael Campillo Lorenzo.
Cceres
Nos ayuda a ejecutar programas, definir ficheros, etc dentro del SO de un Mainframe:
OS 390. Nos conectaremos a travs de la interfaz TSO/ISPF.
Proporciona un alto grado de flexibilidad e independencia respecto de la localizacin
fsica de los ficheros y de los programas.
JCL tiene 18 tipos de sentencias distintas pero las ms importantes y las que nos
interesan son: JOB, EXEC Y DD:
- DD: Data Definition. Define los recursos que va a utilizar el programa, por
ejemplo los ficheros.
Cada trabajo tiene asignado una clase de ejecucin que establece unas prioridades en
la cola de ejecucin.
8.1. Ficheros
Seguimos trabajando con ficheros secuenciales. Definicin de registros:
44
Software Factory Rafael Campillo Lorenzo.
Cceres
El directorio est situado en el comienzo del fichero y contiene una entrada para cada
miembro. Las entradas estn ordenadas alfabticamente por nombre de miembro.
MSGLEVEL(A,B)
Indica si se han de imprimir o no las sentencias de JCL y los mensajes de asignacin
de recursos en el fichero de actividad del trabajo (job log).
45
Software Factory Rafael Campillo Lorenzo.
Cceres
MSGCLASS
Asigna el fichero de actividad del trabajo a una clase de salida. (spool)
CLASS
Asigna el trabajo a una clase. CLASS=A Clase de Ejecucin.
NOTIFY
Solicita que, cuando el trabajo finalice, el sistema enve un mensaje al ID de usuario
de TSO especificado. NOTIFY=&SYSUID
TIME
Especifica la longitud mxima de tiempo durante la cual un trabajo o un paso de
trabajo utilizarn el procesador. El tiempo de procesador utilizado se indica mediante
mensajes. Con este parmetro podemos evitar que un proceso batch que se quede
bloqueado, ocupe recursos del sistema por un tiempo indefinido.
TYPRUN
Se usa para solicitar un tipo de procesamiento especial para el trabajo.
TYPRUN=SCAN.
RESTART
Se usa para rearrancar un trabajo, comenzando desde un paso especificado y saltando
los pasos anteriores o comenzando desde el punto de comprobacin.
RESTART=NombrePaso.
REGION
Se usa para especificar la cantidad mxima de espacio de memoria que puede usar un
trabajo.
COND O IF/END/ELSE
Podemos establecer condiciones para que un trabajo se ejecute o no.
8.7. Sentencia DD
// NOMBREDD DD parmetros_posicionales parmetros_palabra_clave
COBOL JCL
Parmetros posicionales:
46
Software Factory Rafael Campillo Lorenzo.
Cceres
DATA: Igual que la anterior, pero podemos incluir sentencias JCL. Cuando
nosotros creamos un trabajo lo hacemos dentro de un fichero.
DUMMI: Todas las operaciones de E/S deben pasarse por alto, y la asignacin
de dispositivos, la asignacin de espacio y la disposicin de ficheros deben ignorarse.
Define un fichero ficticio. Es una especie de comodn.
//NOMBREDD DD [* / DATA]
(DATOS)
/* //* //(fin de datos)
//NOMBRE DD DUMMY
DSN
Especifica el nombre de un fichero. Ha de tener las mismas condiciones que los
nombres en JOB y EXEC para un nombre de fichero simple, aunque tambin puede
haber nombres de ficheros compuestos, que tendrn como mximo 44 caracteres
(incluyendo los puntos): T971650.FICHERO.COBOL. No es muy prctico utilizar nombres
simples de fichero en un entorno con muchos ficheros. Suelen utilizarse nombres
compuestos. Adems, un nombre de fichero con un nico calificador se catalogar en
el catlogo maestro, situacin que se debe evitar a toda costa. Cada nombre debe ser
nico cuando se utiliza el catlogo.
Un miembro de un fichero particionado puede utilizarse como si fuera un fichero
secuencial poniendo el nombre de miembro entre parntesis.
Dentro de un fichero PDS (biblioteca), tenemos tambin ficheros secuenciales
llamados miembros. As se referencia un miembro:
DSN=T971650.FICHERO.COBOL(MIEMBRO1).
FICHEROS TEMPORALES:
Los nombres de fichero temporal suelen usarse para especificar al sistema ficheros de
trabajo. El sistema borrar los fichros temporales una vez terminado el trabajo, ya sea
de forma normal o anormal.
DSN=&&NOMBRE DSN= ,
Si omitimos el parmetro DSN de la sentencia DD ser el sistema quien asignar un
nombre.
Es posible hacer referencia a un fichero despus de su primera utilizacin en el
trabajo. Para ello, debe hacerse referencia a una sentencia DD anterior que identifique
el fichero.
//TRABAJO1 JOB
//PASO1 EXEC
//FICH1 DD DSN=FICHERO
//FICH2 DD DSN=*.FICH1
//PASO2 EXEC
//FICH3 DD DSN=*.PASO1.FICH1
Con el * se hace referencia a algo anterior. As podemos acceder a FICH1 del paso
anterior, porque al llegar al final del paso1 el fichero se libera.
47
Software Factory Rafael Campillo Lorenzo.
Cceres
DISP
Indica la disposicin del fichero. Puede estar creado o ser nuevo, podemos compartirlo
o no
48
Software Factory Rafael Campillo Lorenzo.
Cceres
UNIT
Hacemos referencia a la unidad en la que est o queremos que se guarde el fichero.
Aqu entra en juego el subsistema SMS. Si sabemos que SMS est activado, UNIT se
puede omitir ya que SMS se encargar de guardar el fichero donde le interese
independientemente de lo que nosotros le indiquemos en este parmetro.
UNIT=TAPE
UNIT=SYSDA
=SYSALLDA
VOL
VOL=SER=EDPAK5 SER sera el nmero de serie
=REF=NOMBREFICH
DCB
Bloque de Control de Datos.
SPACE
SPACE=(TipoUnidad(TRK,CYL,), (PQ,SQ,DIR), RLE (Defragmentar o comprimir))
SYSOUT
Hacemos referencia a una clase de salida. SYSOUT =* JOBMSGCLASS=X.
Cada paso del trabajo empieza con una sentencia EXEC que, o bien indica el
programa que se desea ejecutar, o bien invoca un procedimiento catalogado o
incorporado.
Es necesaria una sentencia EXEC para cada paso del trabajo.
Un trabajo puede tener como mximo 255 pasos.
Parmetros posicionales:
49
Software Factory Rafael Campillo Lorenzo.
Cceres
ACCT
Especifica informacin de contabilidad para este paso
ADDRSPC
Indica el tipo de memoria para este paso (virtual o real)
COND
Indica la comprobacin del cdigo de retorno que se utiliza para determinar si este
paso debe ejecutarse o no. Tiene la misma utilidad que en el JOB pero a nivel local en
el EXEC, y en caso de que est definido tambin en el JOB, es el de ste el que manda.
DPRTY
Asigna una prioridad de despacho para el espacio de direcciones
DYNAMNBR
Mantiene un nmero de asignaciones de ficheros para su reutilizacin
PARM
Transfiere informacin variable al programa en proceso.
PERFORM
Indica el grupo de rendimiento que se utiliza en este paso.
RD
Indica si el operador debe ejecutar el rearranque automtico del paso si ste falla
REGION
Especifica en megaoctetos o kiloctetos la cantidad de espacio que puede utilizar este
paso. Tiene la misma utilidad que en el JOB pero a nivel local en el EXEC, y en caso
de que est definido tambin en el JOB, es el de ste el que manda.
TIME
Indica el tiempo mximo que el paso puede utilizar el procesador. Tiene la misma
utilidad que en el JOB pero a nivel local en el EXEC, y en caso de que est definido
tambin en el JOB, es el de ste el que manda.
- Sentencias de JCL
- Sentencias d Utilidad.
50
Software Factory Rafael Campillo Lorenzo.
Cceres
IEHLIST
Lista los directorios de un fichero particionado o bien los contenidos de la tabla de un
volumen: VTOC.
/*
LISTPDS lista el directorio de un PDS, donde pueden observarse los miembros del
fichero
LISVTOC lista la VTOC completa de un volumen en un disco o parte de la misma.
El formato ser DUMP (Hexadecimal) por defecto o FORMAT (Saca listado legible).
IEBGENER
Se utiliza sobretodo para crear, copiar o imprimir ficheros secuenciales y
particionados. Copia datos de un dispositivo a otro, crea un PDS a partir de un fichero
secuencial, ampla o incorpora miembros a un PDS, crea ficheros editados, cambia la
distribucin en bloques o modifica las longitudes de registro lgico de un fichero
SYSUT1 define el fichero de entrada, SYSUT2 define el fichero de salida, SYSIN define
la entrada de las sentencias de control de la utilidad. La sentencia SYSIN DD puede
codificarse como DUMMY si el programa (IEBGENER) NO REQUIERE EDICIN.
Ejemplo: //SYSIN DD DUMMY. Si se codifica la sentencia SYSIN DD como DUMMY,
todo el fichero de ENTRADA se copia secuencialmente.
51
Software Factory Rafael Campillo Lorenzo.
Cceres
IEBCOPY
Nos va a servir para copiar miembros de particionados a otro PDS o para fusionarlos,
para copiar de un PDS a un secuencial (descarga), copia de uno o ms ficheros
secuenciales creados por una operacin de descarga a un PDS(carga) y compresin de
un PDS: copindolo sobre s mismo.
SELECT MEMBER=(NOMBRE1,NOMBRE2,)
EXCLUDE MEMBER=(NOMBRE1,NOMBRE2,) O PONEMOS UN U OTRA, LOS
QUE QUEREMOS COPIAR, O LOS QUE NO.
/*
IEBCOMPR
Nos va a servir par acomparar 2 ficheros, tanto 2 secuenciales como 2 particionados
(SYSUT1 Y SYSUT2).
Dos ficheros secuenciales los comparamos directamente. En el caso de los PDS no
mira el contenido de los miembros, sino el de los directorios. Por tanto para
IEBCOMPR, F1 y F2 son iguales independientemente del contenido de los miembros.
IEFBR14
Este programa no hace nada en particular. Es un COMODN. Ejemplo: imaginemos
que queremos crear un fichero en un paso y no queremos que haga nada mS:
JCL no nos dejara poner esta sentencia sola. Para ello necesitaramos meterla en un
paso. Usamos nuestro comodn que no hace nada.
DFSORT
MERGE, SORT. Fusionamos y ordenamos ficheros.
52
Software Factory Rafael Campillo Lorenzo.
Cceres
//SORTIN2 DD.
//SORTIN16 DD
//SORTOUT DD DSN=fichero de salida.
---
--- ficheros de trabajo
---
//SYSIN DD *...
... sentencias de control
/*
Sentencias de control: incluimos una serie de campos por los que queremos que
ordene y que se incluyan en el fichero de salida:
DFDSS
Herramienta de gestin de espacio de datos en Disco. Sentencias: COMPRESS, COPY,
DUMP, RELEASE, RESTORE.
REGLAS DE CONCATENACIN
- 255 Ficheros secuenciales como mximo
- 16 ficheros particionados como mximo
- Los ficheros particionados no pueden mezclarse con los secuenciales.
- Los miembros de los ficheros particionados se consideran ficheros
secuenciales.
- El formato de registro (RECFM) debe ser el mismo en todos los ficheros que se
concatenan.
- El tamao de bloque (BLKSIZE) no tiene por qu ser el mismo en todos los
ficheros, pero deber especificarse en primer lugar el fichero con el mayor
tamao de bloque.
- En ficheros de formato de registro variable, la longitud de registro lgico
(LRECL) no tiene por qu ser la misma para todos los ficheros, pero deber
especificarse en primer lugar el fichero que tenga la mayor longitud de registro
lgico.
- Nota: los dos puntos anteriores no suponen conflicto. En caso de que el fichero
con el mayor BLKSIZE no coincida con el de mayor LRECL, se especifica en
primer lugar el de mayor BLKSIZE y se le asigna la mayor de las LRECL
(aunque no sea la suya).
53
Software Factory Rafael Campillo Lorenzo.
Cceres
EDUC.C EDUC.B
54
Software Factory Rafael Campillo Lorenzo.
Cceres
ANEXOS
ANEXO A: Notas y apuntes sobre COBOL y codificacin.
05 A PIC X(10)
05 B REDEFINES A
PIC 9(10)
*--------------
MOVE BNYDE008-FECAPER(1:4) TO FECAPER-NUM(1:4)
MOVE BNYDE008-FECAPER(6:2) TO FECAPER-NUM(5:2)
MOVE BNYDE008-FECAPER(9:2) TO FECAPER-NUM(7:2)
*--------------
MOVE FECAPER-FECHA TO FEC-VALOR-TRA(1)
Otra manera sera idntica pero usando el SCRIPT del centro del mandatos e
insertando la sentencia SQL (CREATE TABLE NombreDCLGEN), usando
tambin la DCLGEN.
55
Software Factory Rafael Campillo Lorenzo.
Cceres
Otra buena idea a la hora de probar el programa es crear una tabla auxiliar
con otro nombre, copia de la que usemos para copiando dicha tabla despus
de cada ejecucin que nos cambie los valores de la tabla, o bien usar en el
cdigo la sentencia ROLLBACK que vuelve las tablas a su estado inicial tras la
ejecucin de un proceso.
PARES: (N Cifras / 2) + 1
IMPARES: (N Cifras + 1) / 2
0 5 3 5
4 C 4 C
56
Software Factory Rafael Campillo Lorenzo.
Cceres
Cdigo Significado
10 Una sentencia secuencial READ fue intentada y no existe otro registro lgico en
el archivo porque ha sido encontrado el fin de archivo.
57
Software Factory Rafael Campillo Lorenzo.
Cceres
35 Se intent una sentencia OPEN con la frase INPUT, I-O o EXTEND sobre un
archivo no opcional que no est presente.
CPF4101, CPF4102, CPF4103
46 Se intent una sentencia secuencial READ sobre un archivo que est abierto en
el modo I-O sin haber establecido un registro vlido debido a que la sentencia start no
se ejecut con xito, la sentencia READ precedente fue insatisfactoria o causa una
58
Software Factory Rafael Campillo Lorenzo.
Cceres
condicin AT END.
CPF5001, CPF5025, CPF5183
90 Otros errores:
Archivo no encontrado.
Miembro no encontrado.
Falta exepciones I-O.
CPF4101, CPF4102, CPF4103 si un USE es aplicable para el archivo (sobre un no
opcional con OPEN OUTPUT).
Las siguientes excepciones se monitora genricamente :
CPF4101 al CPF4399
CPF4501 al CPF4699
CPF4701 al CPF4899
CPF4901 al CPF4999
CPF5001 al CPF5099
CPF5101 al CPF5399
CPF5501 al CPF5699
92 Error lgico:
Archivo bloqueado
El archivo ya est abierto
I-O para un archivo cerrado
READ despus de fin de archivo
59
Software Factory Rafael Campillo Lorenzo.
Cceres
99 Al borrar, leer o reescribir un registro que est siendo bloqueado por otro
usuario.
9 A El trabajo a sido cancelado de una manera controlada por comandos CL, CNLJOB,
TRMSBS, TRMCPF, PWRDWNSYS.
CPF4741
60
Software Factory Rafael Campillo Lorenzo.
Cceres
9 P Open fall porque el archivo no puede ser ubicado bajo control ???
CPF4293, CPF4326, CPF4327, CPF4328, CPF4329
61
Software Factory Rafael Campillo Lorenzo.
Cceres
Cuando ejecutamos un programa que usa SQL, DB2 nos devuelve un SQLCODE que
nos informa si nuestro cdigo SQL se ejecut correctamente o no. Estos son los
SQLCODES ms comunes que puede devolver DB2 tras la ejecucin de sentencias
SQL:
SQLCODE +100 SQLSTATE 02000
SQLCODE -206 Column does not exist in any table in the SELECT
SQLCODE -216
You need to use the same number of expressions on both sides of the comparison.
when using multiple operands in a comparison,
Correct example:
WHERE (E.SALARY, E.COMM) IN
(SELECT S.PAY, S.COMMISSION
Incorrect example:
SQLCODE +222 Trying to fetch a row that fell through a DELETE hole
SQLCODE +223 Trying to fetch a row that fell through an UPDATE hole
SQLCODE -229 The locale specified in a SET LOCALE statement was not found.
SQLCODE +304 Value cannot be assigned to this host variable because it is out of range
62
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -805
DBRM or package not found in plan
Is plan name correct?
SQLCODE -811 More than one row retrieved in SELECT INTO
SQLCODE -927 The language interface was called but no connection had been
***************************************************************************************
SQLCODE -991, Error: CALL ATTACH WAS UNABLE TO ESTABLISH AN IMPLICIT CONNECT OR OPEN
TO DB2. RC1= RC2=
SQLCODE -981, Error: THE SQL STATEMENT FAILED BECAUSE THE RRSAF CONNECTION IS NOT IN
A STATE THAT ALLOWS SQL OPERATIONS, REASON
SQLCODE -950, Error: THE LOCATION NAME SPECIFIED IN THE CONNECT STATEMENT IS INVALID
OR NOT LISTED IN THE COMMUNICATIONS DATABASE
SQLCODE -947, Error: THE SQL STATEMENT FAILED BECAUSE IT WILL CHANGE A TABLE DEFINED
WITH DATA CAPTURE
CHANGES, BUT THE DATA CANNOT BE PROPAGATED
SQLCODE -939, Error: ROLLBACK REQUIRED DUE TO UNREQUESTED ROLLBACK OF A REMOTE SERVER
SQLCODE -927, Error: THE LANGUAGE INTERFACE (LI) WAS CALLED WHEN THE CONNECTING
ENVIRONMENT WAS NOT
ESTABLISHED. THE PROGRAM SHOULD BE INVOKED UNDER THE DSN COMMAND
SQLCODE -923, Error: CONNECTION NOT ESTABLISHED: DB2 , REASON , TYPE , NAME
63
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -918, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE A CONNECTION HAS
BEEN LOST
SQLCODE -911, Error: THE CURRENT UNIT OF WORK HAS BEEN ROLLED BACK DUE TO DEADLOCK OR
TIMEOUT. REASON ,
TYPE OF RESOURCE , AND RESOURCE NAME
SQLCODE -910, Error: THE SQL STATEMENT CANNOT ACCESS AN OBJECT ON WHICH A DROP OR
ALTER IS PENDING
SQLCODE -908, Error: ERROR USING AUTHORITY. BIND, REBIND, OR AUTO-REBIND OPERATION
IS NOT ALLOWED
SQLCODE -906, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THIS FUNCTION IS
DISABLED DUE TO A PRIOR ERROR
SQLCODE -905, Error: UNSUCCESSFUL EXECUTION DUE TO RESOURCE LIMIT BEING EXCEEDED,
RESOURCE NAME = LIMIT =
CPU SECONDS ( SERVICE UNITS) DERIVED FROM
SQLCODE -902, Error: POINTER TO ESSENTIAL CONTROL BLOCK(RDA/CT) HAS VALUE 0, REBIND
REQUIRED
SQLCODE -901, Error: UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT DOES NOT
PRECLUDE THE SUCCESSFUL
EXECUTION OF SUBSEQUENT SQL STATEMENTS
SQLCODE -900, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THE APPLICATION
PROCESS IS NOT CONNECTED
TO AN APPLICATION SERVER
SQLCODE -881, Error: A SAVEPOINT WITH NAME ALREADY EXISTS, BUT THIS SAVEPOINT NAME
CANNOT BE REUSED
SQLCODE -880, Error: SAVEPOINT DOES NOT EXIST OR IS INVALID IN THIS CONTEXT
SQLCODE -879, Error: CREATE OR ALTER STATEMENT FOR CANNOT DEFINE A COLUMN, DISTINCT
TYPE, FUNCTION OR
STORED PROCEDURE PARAMETER AS MIXED OR GRAPHIC WITH ENCODING SCHEME
SQLCODE -878, Error: THE PLAN_TABLE USED FOR EXPLAIN CANNOT BE ASCII
SQLCODE -877, Error: CCSID ASCII IS NOT ALLOWED FOR THIS DATABASE OR TABLE SPACE
SQLCODE -875, Error: CANNOT BE USED WITH THE ASCII DATA REFERENCED
SQLCODE -874, Error: THE ENCODING SCHEME SPECIFIED FOR THE MUST BE THE SAME AS THE
CONTAINING TABLE SPACE OR OTHER PARAMETERS
SQLCODE -873, Error: DATA ENCODED WITH DIFFERENT CCSIDS CANNOT BE REFERENCED IN THE
SAME SQL STATEMENT
SQLCODE -872, Error: A VALID CCSID HAS NOT YET BEEN SPECIFIED FOR THIS SUBSYSTEM
SQLCODE -870, Error: THE NUMBER OF HOST VARIABLES IN THE STATEMENT IS NOT EQUAL TO
THE NUMBER OF DESCRIPTORS
64
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -843, Error: THE SET CONNECTION OR RELEASE STATEMENT MUST SPECIFY AN EXISTING
CONNECTION
SQLCODE -840, Error: TOO MANY ITEMS RETURNED IN A SELECT OR INSERT LIST
SQLCODE -822, Error: THE SQLDA CONTAINS AN INVALID DATA ADDRESS OR INDICATOR VARIABLE
ADDRESS
SQLCODE -820, Error: THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE CONTAINS A VALUE
THAT IS NOT VALID IN THIS RELEASE
SQLCODE -819, Error: THE VIEW CANNOT BE PROCESSED BECAUSE THE LENGTH OF ITS PARSE
TREE IN THE CATALOG IS ZERO
SQLCODE -817, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THE STATEMENT WILL
RESULT IN A PROHIBITED UPDATE OPERATION
SQLCODE -812, Error: THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE A BLANK
COLLECTION-ID WAS FOUND IN THE CURRENT
PACKAGESET SPECIAL REGISTER WHILE TRYING TO FORM A QUALIFIED PACKAGE NAME FOR PROGRAM
USING PLAN
SQLCODE -811, Error: THE RESULT OF AN EMBEDDED SELECT STATEMENT OR A SUBSELECT IN THE
SET CLAUSE OF AN
UPDATE STATEMENT IS A TABLE OF MORE THAN ONE ROW, OR THE RESULT OF A SUBQUERY OF A BASIC
PREDICATE IS MORE THAN VALUE
SQLCODE -808, Error: THE CONNECT STATEMENT IS NOT CONSISTENT WITH THE FIRST CONNECT
STATEMENT
SQLCODE -807, Error: ACCESS DENIED: PACKAGE IS NOT ENABLED FOR ACCESS FROM
SQLCODE -805, Error: DBRM OR PACKAGE NAME NOT FOUND IN PLAN . REASON
SQLCODE -804, Error: AN ERROR WAS FOUND IN THE APPLICATION PROGRAM INPUT PARAMETERS
FOR THE SQL STATEMENT, REASON
SQLCODE -803, Error: AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE INDEX IN INDEX
SPACE CONSTRAINS
COLUMNS OF THE TABLE SO NO TWO ROWS CAN CONTAIN DUPLICATE VALUES IN THOSE COLUMNS. RID
OF EXISTING ROW IS X''
SQLCODE -802, Error: EXCEPTION ERROR HAS OCCURRED DURING OPERATION ON DATA,
POSITION
SQLCODE -798, Error: YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE
OPTION GENERATED ALWAYS. COLUMN NAME
SQLCODE -797, Error: ATTEMPT TO CREATE TRIGGER WITH AN UNSUPPORTED TRIGGERED SQL
STATEMENT
SQLCODE -770, Error: TABLE CANNOT HAVE A LOB COLUMN UNLESS IT ALSO HAS A ROWID
COLUMN
SQLCODE -769, Error: SPECIFICATION OF CREATE AUX TABLE DOES NOT MATCH THE
CHARACTERISTICS OF THE BASE TABLE
SQLCODE -768, Error: AN AUXILIARY TABLE ALREADY EXISTS FOR THE SPECIFIED COLUMN OR
PARTITION
65
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -766, Error: THE OBJECT OF A STATEMENT IS AN AUXILIARY TABLE FOR WHICH THE
REQUESTED OPERATION IS NOT PERMITTED
SQLCODE -764, Error: A LOB TABLE SPACE AND ITS ASSOCIATED BASE TABLE SPACE MUST BE IN
THE SAME DATABASE
SQLCODE -752, Error: THE CONNECT STATEMENT IS INVALID BECAUSE THE PROCESS IS NOT IN
THE CONNECTABLE STATE
SQLCODE -751, Error: (SPECIFIC NAME ) ATTEMPTED TO EXECUTE AN SQL STATEMENT THAT IS
NOT ALLOWED
SQLCODE -750, Error: THE SOURCE TABLE CANNOT BE RENAMED BECAUSE IT IS REFERENCED IN
EXISTING VIEW
DEFINITIONS OR TRIGGER DEFINITIONS
SQLCODE -747, Error: TABLE IS NOT AVAILABLE UNTIL THE AUXILIARY TABLES AND INDEXES
FOR ITS EXTERNALLY
STORED COLUMNS HAVE BEEN CREATED
SQLCODE -746, Error: THE SQL STATEMENT IN AN EXTERNAL FUNCTION, TRIGGER, OR IN STORED
PROCEDURE VIOLATES
THE NESTING SQL RESTRICTION
SQLCODE -740, Error: FUNCTION IS DEFINED WITH THE OPTION MODIFIES SQL DATA WHICH IS
NOT VALID IN THE
CONTEXT IN WHICH IT WAS INVOKED
SQLCODE -739, Error: ALTER FUNCTION FAILED BECAUSE FUNCTIONS CANNOT MODIFY DATA WHEN
THEY ARE PROCESSED IN PARALLEL
SQLCODE -734, Error: THE ROSHARE ATTRIBUTE OF A DATABASE CANNOT BE ALTERED FROM
ROSHARE READ
SQLCODE -733, Error: THE DESCRIPTION OF A TABLE SPACE, INDEX SPACE, OR TABLE IN A
ROSHARE READ DATABASE
MUST BE CONSISTENT WITH ITS DESCRIPTION IN THE OWNER SYSTEM
SQLCODE -732, Error: THE DATABASE IS DEFINED ON THIS SUBSYSTEM WITH THE ROSHARE READ
ATTRIBUTE BUT THE
TABLE SPACE OR INDEX SPACE HAS NOT BEEN DEFINED ON THE OWNING SUBSYSTEM
SQLCODE -731, Error: USER-DEFINED DATASET MUST BE DEFINED WITH SHAREOPTIONS (1,3)
SQLCODE -730, Error: THE PARENT OF A TABLE IN A READ-ONLY SHARED DATABASE MUST ALSO
BE A TABLE IN A
READ-ONLY SHARED DATABASE
SQLCODE -729, Error: A STORED PROCEDURE SPECIFYING COMMIT ON RETURN CANNOT BE THE
TARGET OF A NESTED CALL STATEMENT
SQLCODE -728, Error: DATA TYPE IS NOT ALLOWED IN DB2 PRIVATE PROTOCOL PROCESSING
SQLCODE -726, Error: BIND ERROR ATTEMPTING TO REPLACE PACKAGE = . THERE ARE ENABLE
OR DISABLE ENTRIES
66
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -725, Error: THE SPECIAL REGISTER AT LOCATION WAS SUPPLIED AN INVALID VALUE
SQLCODE -724, Error: THE ACTIVATION OF THE OBJECT WOULD EXCEED THE MAXIMUM LEVEL OF
INDIRECT SQL CASCADING
SQLCODE -722, Error: ERROR USING AUTHORITY PACKAGE DOES NOT EXIST
SQLCODE -721, Error: BIND ERROR FOR PACKAGE = CONTOKEN = ''X IS NOT UNIQUE SO IT
CANNOT BE CREATED
SQLCODE -720, Error: BIND ERROR, ATTEMPTING TO REPLACE PACKAGE = WITH VERSION = BUT
THIS VERSION ALREADY EXISTS
SQLCODE -719, Error: BIND ADD ERROR USING AUTHORITY PACKAGE ALREADY EXISTS
SQLCODE -717, Error: FOR WITH MARK FAILED BECAUSE DEPENDS ON FUNCTIONS OF THE
RELEASE FROM WHICH FALLBACK HAS OCCURRED
SQLCODE -716, Error: PROGRAM PRECOMPILED WITH INCORRECT LEVEL FOR THIS RELEASE
SQLCODE -715, Error: PROGRAM WITH MARK FAILED BECAUSE IT DEPENDS ON FUNCTIONS OF
THE RELEASE FROM WHICH FALLBACK HAS OCCURRED
SQLCODE -697, Error: OLD OR NEW CORRELATION NAMES ARE NOT ALLOWED IN A TRIGGER
DEFINED WITH THE FOR EACH
STATEMENT CLAUSE. OLD_TABLE OR NEW_TABLE NAMES ARE NOT ALLOWED IN A TRIGGER WITH THE
BEFORE CLAUSE
SQLCODE -694, Error: THE DDL STATEMENT CANNOT BE EXECUTED BECAUSE A DROP IS PENDING
ON THE DDL REGISTRATION TABLE
SQLCODE -693, Error: THE COLUMN IN DDL REGISTRATION TABLE OR INDEX IS NOT DEFINED
PROPERLY
SQLCODE -692, Error: THE REQUIRED UNIQUE INDEX FOR DDL REGISTRATION TABLE DOES NOT
EXIST
SQLCODE -691, Error: THE REQUIRED REGISTRATION TABLE DOES NOT EXIST
SQLCODE -690, Error: THE STATEMENT IS REJECTED BY DATA DEFINITION CONTROL SUPPORT.
REASON
SQLCODE -689, Error: TOO MANY COLUMNS DEFINED FOR A DEPENDENT TABLE
SQLCODE -686, Error: COLUMN DEFINED WITH A FIELD PROCEDURE CAN NOT COMPARE WITH
ANOTHER COLUMN WITH
DIFFERENT FIELD PROCEDURE
SQLCODE -684, Error: THE LENGTH OF LITERAL LIST BEGINNING IS TOO LONG
SQLCODE -683, Error: THE SPECIFICATION FOR COLUMN, DISTINCT TYPE, FUNCTION, OR
PROCEDURE CONTAINS INCOMPATIBLE CLAUSES
67
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -680, Error: TOO MANY COLUMNS SPECIFIED FOR A TABLE, VIEW, OR TABLE FUNCTION
SQLCODE -679, Error: THE OBJECT CANNOT BE CREATED BECAUSE A DROP IS PENDING ON THE
OBJECT
SQLCODE -678, Error: THE LITERAL SPECIFIED FOR THE INDEX LIMIT KEY MUST CONFORM TO
THE DATA TYPE OF THE CORRESPONDING COLUMN
SQLCODE -676, Error: ONLY A 4K PAGE BUFFERPOOL CAN BE USED FOR AN INDEX
SQLCODE -671, Error: THE BUFFERPOOL ATTRIBUTE OF THE TABLE SPACE CANNOT BE ALTERED AS
SPECIFIED BECAUSE IT
WOULD CHANGE THE PAGE SIZE OF THE TABLE SPACE
SQLCODE -670, Error: THE RECORD LENGTH OF THE TABLE EXCEEDS THE PAGE SIZE LIMIT
SQLCODE -668, Error: THE COLUMN CANNOT BE ADDED TO THE TABLE BECAUSE THE TABLE HAS AN
EDIT PROCEDURE
SQLCODE -667, Error: THE CLUSTERING INDEX FOR A PARTITIONED TABLE SPACE CANNOT BE
EXPLICITLY DROPPED
SQLCODE -665, Error: THE PART CLAUSE OF AN ALTER STATEMENT IS OMITTED OR INVALID
SQLCODE -663, Error: THE NUMBER OF KEY LIMIT VALUES IS EITHER ZERO, OR GREATER THAN
THE NUMBER OF COLUMNS IN THE KEY OF INDEX
SQLCODE -661, Error: INDEX CANNOT BE CREATED ON PARTITIONED TABLE SPACE BECAUSE THE
NUMBER OF PART
SPECIFICATIONS IS NOT EQUAL TO THE NUMBER OF PARTITIONS OF THE TABLE SPACE
SQLCODE -660, Error: INDEX CANNOT BE CREATED ON PARTITIONED TABLE SPACE x BECAUSE
KEY LIMITS ARE NOT SPECIFIED
SQLCODE -655, Error: THE CREATE OR ALTER STOGROUP IS INVALID BECAUSE THE STORAGE
GROUP WOULD HAVE BOTH
SPECIFIC AND NON-SPECIFIC VOLUME IDS
SQLCODE -653, Error: TABLE IN PARTITIONED TABLE SPACE IS NOT AVAILABLE BECAUSE ITS
PARTITIONED INDEX HAS NOT BEEN CREATED
SQLCODE -651, Error: TABLE DESCRIPTION EXCEEDS MAXIMUM SIZE OF OBJECT DESCRIPTOR
SQLCODE -647, Error: BUFFERPOOL CANNOT BE SPECIFIED BECAUSE IT HAS NOT BEEN
ACTIVATED
SQLCODE -646, Error: TABLE CANNOT BE CREATED IN SPECIFIED TABLE SPACE BECAUSE IT
ALREADY CONTAINS A TABLE
68
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -640, Error: LOCKSIZE ROW CANNOT BE SPECIFIED BECAUSE TABLE IN THIS
TABLESPACE HAS TYPE 1 INDEX
SQLCODE -639, Error: 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
SQLCODE -638, Error: TABLE CANNOT BE CREATED BECAUSE COLUMN DEFINITION IS MISSING
SQLCODE -636, Error: THE PARTITIONING KEYS FOR PARTITION ARE NOT SPECIFIED IN
ASCENDING OR DESCENDING ORDER
SQLCODE -635, Error: THE DELETE RULES CANNOT BE DIFFERENT OR CANNOT BE SET NULL
SQLCODE -632, Error: THE TABLE CANNOT BE DEFINED AS A DEPENDENT OF BECAUSE OF DELETE
RULE RESTRICTIONS
SQLCODE -631, Error: FOREIGN KEY IS TOO LONG OR HAS TOO MANY COLUMNS
SQLCODE -630, Error: THE WHERE NOT NULL SPECIFICATION IS INVALID FOR TYPE 1 INDEXES
SQLCODE -629, Error: SET NULL CANNOT BE SPECIFIED BECAUSE FOREIGN KEY CANNOT CONTAIN
NULL VALUES
SQLCODE -627, Error: THE ALTER STATEMENT IS INVALID BECAUSE THE PAGESET HAS USER-
MANAGED DATA SETS
SQLCODE -626, Error: THE ALTER STATEMENT IS NOT EXECUTABLE BECAUSE THE PAGE SET IS
NOT STOPPED
SQLCODE -625, Error: TABLE DOES NOT HAVE AN INDEX TO ENFORCE THE UNIQUENESS OF THE
PARENT KEY
SQLCODE -622, Error: FOR MIXED DATA IS INVALID BECAUSE THE MIXED DATA INSTALL OPTION
IS NO
SQLCODE -621, Error: DUPLICATE DBID WAS DETECTED AND PREVIOUSLY ASSIGNED TO
SQLCODE -620, Error: KEYWORD IN STATEMENT IS NOT PERMITTED FOR A SPACE IN THE
DATABASE
SQLCODE -619, Error: OPERATION DISALLOWED BECAUSE THE WORK FILE DATABASE IS NOT
STOPPED
SQLCODE -614, Error: THE INDEX CANNOT BE CREATED OR THE LENGTH OF THE COLUMN CANNOT
BE CHANGED BECAUSE THE
SUM OF THE INTERNAL LENGTHS OF THE IDENTIFIED COLUMNS IS GREATER THAN THE ALLOWABLE
MAXIMUM
SQLCODE -613, Error: THE PRIMARY KEY OR A UNIQUE CONSTRAINT IS TOO LONG OR HAS TOO
MANY COLUMNS
69
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -611, Error: ONLY LOCKMAX 0 CAN BE SPECIFIED WHEN THE LOCK SIZE OF THE
TABLESPACE IS TABLESPACE OR TABLE
SQLCODE -607, Error: OPERATION OR OPTION IS NOT DEFINED FOR THIS OBJECT
SQLCODE -604, Error: A DATA TYPE DEFINITION SPECIFIES AN INVALID LENGTH, PRECISION,
OR SCALE ATTRIBUTE
SQLCODE -603, Error: A UNIQUE INDEX CANNOT BE CREATED BECAUSE THE TABLE CONTAINS ROWS
WHICH ARE DUPLICATES
WITH RESPECT TO THE VALUES OF THE IDENTIFIED COLUMNS
SQLCODE -601, Error: THE NAME OF THE OBJECT TO BE CREATED OR THE TARGET OF A RENAME
STATEMENT IS IDENTICAL
TO THE EXISTING NAME OF THE OBJECT TYPE
SQLCODE -594, Error: ATTEMPT TO CREATE A NULLABLE ROWID OR DISTINCT TYPE COLUMN
SQLCODE -593, Error: NOT NULL MUST BE SPECIFIED FOR ROWID OR DISTINCT TYPE COLUMN
SQLCODE -590, Error: PARAMETER NAME IS NOT UNIQUE IN THE CREATE FOR ROUTINE
SQLCODE -586, Error: THE TOTAL LENGTH OF THE CURRENT PATH SPECIAL REGISTER CANNOT
EXCEED 254 CHARACTERS
SQLCODE -585, Error: THE SCHEMA NAME CANNOT APPEAR MORE THAN ONCE IN THE CURRENT
PATH
SQLCODE -581, Error: THE DATA TYPES OF THE RESULT-EXPRESSIONS OF A CASE EXPRESSION
ARE NOT COMPATIBLE
SQLCODE -580, Error: THE RESULT-EXPRESSIONS OF A CASE EXPRESSION CANNOT ALL BE NULL
SQLCODE -579, Error: ATTEMPTED TO READ DATA WHEN THE DEFINITION OF THE FUNCTION OR
PROCEDURE DID NOT SPECIFY THIS ACTION
SQLCODE -577, Error: ATTEMPTED TO MODIFY DATA WHEN THE DEFINITION OF THE FUNCTION
OR PROCEDURE DID NOT SPECIFY THIS ACTION
SQLCODE -574, Error: THE SPECIFIED DEFAULT VALUE OR IDENTITY ATTRIBUTE VALUE
CONFLICTS WITH THE DEFINITION OF COLUMN
SQLCODE -573, Error: TABLE DOES NOT HAVE A UNIQUE KEY WITH THE SPECIFIED COLUMN
NAMES
SQLCODE -571, Error: THE STATEMENT WOULD RESULT IN A MULTIPLE SITE UPDATE
SQLCODE -556, Error: CANNOT HAVE THE PRIVILEGE REVOKED BY BECAUSE THE REVOKEE DOES
NOT POSSESS THE
PRIVILEGE OR THE REVOKER DID NOT MAKE THE GRANT
70
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -553, Error: SPECIFIED IS NOT ONE OF THE VALID AUTHORIZATION IDS
SQLCODE -552, Error: DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION
SQLCODE -551, Error: DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION ON OBJECT
SQLCODE -549, Error: THE STATEMENT IS NOT ALLOWED FOR BECAUSE THE BIND OPTION
DYNAMICRULES(RUN) IS NOT IN EFFECT FOR
SQLCODE -545, Error: THE REQUESTED OPERATION IS NOT ALLOWED BECAUSE A ROW DOES NOT
SATISFY THE CHECK CONSTRAINT
SQLCODE -544, Error: THE CHECK CONSTRAINT SPECIFIED IN THE ALTER TABLE STATEMENT
CANNOT BE ADDED BECAUSE AN
EXISTING ROW VIOLATES THE CHECK CONSTRAINT
SQLCODE -543, Error: A ROW IN A PARENT TABLE CANNOT BE DELETED BECAUSE THE CHECK
CONSTRAINT RESTRICTS THE DELETION
SQLCODE -538, Error: FOREIGN KEY DOES NOT CONFORM TO THE DESCRIPTION OF A PARENT KEY
OF TABLE
SQLCODE -537, Error: THE PRIMARY KEY CLAUSE, A FOREIGN KEY CLAUSE, OR A UNIQUE CLAUSE
IDENTIFIES COLUMN MORE THAN ONCE
SQLCODE -536, Error: THE DELETE STATEMENT IS INVALID BECAUSE TABLE CAN BE AFFECTED
BY THE OPERATION
SQLCODE -534, Error: THE PRIMARY KEY CANNOT BE UPDATED BECAUSE OF MULTIPLE-ROW UPDATE
SQLCODE -532, Error: THE RELATIONSHIP RESTRICTS THE DELETION OF ROW WITH RID X''
SQLCODE -531, Error: PARENT KEY IN A PARENT ROW CANNOT BE UPDATED BECAUSE IT HAS ONE
OR MORE DEPENDENT ROWS IN RELATIONSHIP
SQLCODE -530, Error: THE INSERT OR UPDATE VALUE OF FOREIGN KEY IS INVALID
SQLCODE -526, Error: THE REQUESTED OPERATION OR USAGE DOES NOT APPLY TO TEMPORARY
TABLE
SQLCODE -525, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT WAS IN ERROR AT
BIND TIME FOR SECTION
= PACKAGE = CONSISTENCY TOKEN = X''
SQLCODE -519, Error: THE PREPARE STATEMENT IDENTIFIES THE SELECT STATEMENT OF THE
OPENED CURSOR
SQLCODE -518, Error: THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED
STATEMENT
SQLCODE -517, Error: CURSOR CANNOT BE USED BECAUSE ITS STATEMENT NAME DOES NOT
IDENTIFY A PREPARED SELECT STATEMENT
SQLCODE -516, Error: THE DESCRIBE FOR STATIC STATEMENT DOES NOT IDENTIFY A PREPARED
STATEMENT
SQLCODE -513, Error: THE ALIAS MUST NOT BE DEFINED ON ANOTHER LOCAL OR REMOTE ALIAS
71
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -511, Error: THE FOR UPDATE CLAUSE CANNOT BE SPECIFIED BECAUSE THE TABLE
DESIGNATED BY THE CURSOR CANNOT BE MODIFIED
SQLCODE -510, Error: THE TABLE DESIGNATED BY THE CURSOR OF THE UPDATE OR DELETE
STATEMENT CANNOT BE MODIFIED
SQLCODE -509, Error: THE TABLE IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT
THE SAME TABLE
DESIGNATED BY THE CURSOR
SQLCODE -508, Error: THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT
POSITIONED ON A ROW
SQLCODE -507, Error: THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT
OPEN
SQLCODE -503, Error: A COLUMN CANNOT BE UPDATED BECAUSE IT IS NOT IDENTIFIED IN THE
UPDATE CLAUSE OF THE
SELECT STATEMENT OF THE CURSOR
SQLCODE -502, Error: THE CURSOR IDENTIFIED IN AN OPEN STATEMENT IS ALREADY OPEN
SQLCODE -501, Error: THE CURSOR IDENTIFIED IN A FETCH OR CLOSE STATEMENT IS NOT OPEN
SQLCODE -500, Error: THE IDENTIFIED CURSOR WAS CLOSED WHEN THE CONNECTION WAS
DESTROYED
SQLCODE -499, Error: CURSOR HAS ALREADY BEEN ASSIGNED TO THIS OR ANOTHER RESULT SET
FROM PROCEDURE
SQLCODE -497, Error: THE MAXIMUM LIMIT OF INTERNAL IDENTIFIERS HAS BEEN EXCEEDED FOR
DATABASE
SQLCODE -496, Error: THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT REFERENCES A
RESULT SET THAT WAS NOT
CREATED BY THE CURRENT SERVER
SQLCODE -495, Error: ESTIMATED PROCESSOR COST OF PROCESSOR SECONDS ( SERVICE UNITS)
IN COST CATEGORY
EXCEEDS A RESOURCE LIMIT ERROR THRESHOLD OF SERVICE UNITS
SQLCODE -492, Error: THE CREATE FUNCTION FOR HAS A PROBLEM WITH PARAMETER NUMBER .
IT MAY INVOLVE A
MISMATCH WITH A SOURCE FUNCTION
SQLCODE -491, Error: CREATE STATEMENT FOR USER-DEFINED FUNCTION MUST HAVE A RETURNS
CLAUSE, AND EITHER THE
EXTERNAL CLAUSE (WITH OTHER REQUIRED KEYWORDS) OR THE SOURCE CLAUSE
SQLCODE -490, Error: NUMBER DIRECTLY SPECIFIED IN AN SQL STATEMENT IS OUTSIDE THE
RANGE OF ALLOWABLE
VALUES IN THIS CONTEXT (, )
SQLCODE -487, Error: ATTEMPTED TO EXECUTE AN SQL STATEMENT WHEN THE DEFINITION OF
THE FUNCTION OR
PROCEDURE DID NOT SPECIFY THIS ACTION
SQLCODE -483, Error: IN CREATE FUNCTION FOR STATEMENT, THE NUMBER OF PARAMETERS DOES
NOT MATCH THE NUMBER
OF PARAMETERS OF THE SOURCE FUNCTION
SQLCODE -480, Error: THE PROCEDURE HAS NOT YET BEEN CALLED
SQLCODE -478, Error: DROP OR REVOKE ON OBJECT TYPE CANNOT BE PROCESSED BECAUSE
OBJECT OF TYPE IS
DEPENDENT ON IT
72
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -476, Error: REFERENCE TO FUNCTION WAS NAMED WITHOUT A SIGNATURE, BUT THE
FUNCTION IS NOT UNIQUE
WITHIN ITS SCHEMA
SQLCODE -475, Error: THE RESULT TYPE OF THE SOURCE FUNCTION CANNOT BE CAST TO THE
RETURNS TYPE OF THE
USER-DEFINED FUNCTION
SQLCODE -473, Error: A USER DEFINED DATA TYPE CANNOT BE CALLED THE SAME NAME AS A
SYSTEM PREDEFINED TYPE
(BUILT-IN TYPE)
SQLCODE -472, Error: CURSOR WAS LEFT OPEN BY EXTERNAL FUNCTION (SPECIFIC NAME )
SQLCODE -470, Error: SQL CALL STATEMENT SPECIFIED A NULL VALUE FOR INPUT PARAMETER ,
BUT THE STORED
PROCEDURE DOES NOT SUPPORT NULL VALUES
SQLCODE -469, Error: SQL CALL STATEMENT MUST SPECIFY AN OUTPUT HOST VARIABLE FOR
PARAMETER
SQLCODE -463, Error: EXTERNAL FUNCTION (SPECIFIC NAME ) HAS RETURNED AN INVALID
SQLSTATE , WITH DIAGNOSTIC TEXT
SQLCODE -461, Error: A VALUE WITH DATA TYPE CANNOT BE CAST TO TYPE
SQLCODE -456, Error: IN CREATE FUNCTION FOR , THE SPECIFIC NAME ALREADY EXISTS IN
THE SCHEMA
SQLCODE -455, Error: IN CREATE FUNCTION FOR , THE SCHEMA NAME PROVIDED FOR THE
SPECIFIC NAME DOES NOT
MATCH THE SCHEMA NAME OF THE FUNCTION
SQLCODE -454, Error: THE SIGNATURE PROVIDED IN THE CREATE FUNCTION STATEMENT FOR
MATCHES THE SIGNATURE OF
SOME OTHER FUNCTION ALREADY EXISTING IN THE SCHEMA
SQLCODE -453, Error: THERE IS A PROBLEM WITH THE RETURNS CLAUSE IN THE CREATE
FUNCTION STATEMENT FOR
SQLCODE -451, Error: THE DEFINITION, IN THE CREATE FUNCTION FOR CONTAINS DATA TYPE
WHICH IS NOT
APPROPRIATE FOR AN EXTERNAL FUNCTION WRITTEN IN THE GIVEN LANGUAGE
SQLCODE -449, Error: CREATE OR ALTER STATEMENT FOR FUNCTION OR PROCEDURE CONTAINS AN
INVALID FORMAT OF THE
EXTERNAL NAME CLAUSE OR IS MISSING THE EXTERNAL NAME CLAUSE
SQLCODE -443, Error: EXTERNAL FUNCTION (SPECIFIC NAME ) HAS RETURNED AN ERROR
SQLSTATE WITH DIAGNOSTIC TEXT
SQLCODE -441, Error: INVALID USE OF 'DISTINCT' OR 'ALL' WITH SCALAR FUNCTION
SQLCODE -440, Error: NO BY THE NAME HAVING COMPATIBLE ARGUMENTS WAS FOUND IN THE
CURRENT PATH
73
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -427, Error: DYNAMIC ROLLBACK NOT VALID AT AN APPLICATION SERVER WHERE
UPDATES ARE NOT ALLOWED
SQLCODE -426, Error: DYNAMIC COMMIT NOT VALID AT AN APPLICATION SERVER WHERE UPDATES
ARE NOT ALLOWED
SQLCODE -421, Error: THE OPERANDS OF A UNION OR UNION ALL DO NOT HAVE THE SAME NUMBER
OF COLUMNS
SQLCODE -420, Error: THE VALUE OF A CHARACTER STRING ARGUMENT WAS NOT ACCEPTABLE TO
THE FUNCTION
SQLCODE -419, Error: A DECIMAL DIVIDE OPERATION IS INVALID BECAUSE THE RESULT WOULD
HAVE A NEGATIVE SCALE
SQLCODE -414, Error: A LIKE PREDICATE IS INVALID BECAUSE THE FIRST OPERAND IS NOT A
STRING
SQLCODE -413, Error: OVERFLOW OCCURRED DURING NUMERIC DATA TYPE CONVERSION
SQLCODE -412, Error: THE SELECT CLAUSE OF A SUBQUERY SPECIFIES MULTIPLE COLUMNS
SQLCODE -411, Error: CURRENT SQLID CANNOT BE USED IN A STATEMENT THAT REFERENCES
REMOTE OBJECTS
SQLCODE -410, Error: THE FLOATING POINT LITERAL CONTAINS MORE THAN 30 CHARACTERS
SQLCODE -408, Error: THE VALUE IS NOT COMPATIBLE WITH THE DATA TYPE OF ITS TARGET
SQLCODE -407, Error: AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT THE OBJECT COLUMN
CANNOT CONTAIN NULL VALUES
SQLCODE -406, Error: A CALCULATED OR DERIVED NUMERIC VALUE IS NOT WITHIN THE RANGE OF
ITS OBJECT COLUMN
SQLCODE -405, Error: THE NUMERIC LITERAL CANNOT BE USED AS SPECIFIED BECAUSE IT IS
OUT OF RANGE
SQLCODE -404, Error: THE SQL STATEMENT SPECIFIES A STRING THAT IS TOO LONG
SQLCODE -401, Error: THE OPERANDS OF AN ARITHMETIC OR COMPARISON OPERATION ARE NOT
COMPARABLE
SQLCODE -400, Error: THE CATALOG HAS THE MAXIMUM NUMBER OF USER DEFINED INDEXES
SQLCODE -399, Error: ATTEMPTED TO INSERT AN INVALID VALUE INTO A ROWID COLUMN
SQLCODE -398, Error: A LOCATOR WAS REQUESTED FOR HOST VARIABLE NUMBER BUT THE
VARIABLE IS NOT A LOB
74
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -397, Error: THE OPTION GENERATED IS SPECIFIED WITH A COLUMN THAT IS NOT A
ROW ID OR DISTINCT TYPE BASED ON A ROW ID
SQLCODE -396, Error: ATTEMPTED TO EXECUTE AN SQL STATEMENT DURING FINAL CALL
PROCESSING
SQLCODE -392, Error: SQLDA PROVIDED FOR CURSOR HAS BEEN CHANGED FROM THE PREVIOUS
FETCH
SQLCODE -390, Error: THE FUNCTION NAME , SPECIFIC NAME , IS NOT VALID IN THE CONTEXT
IN WHICH IT OCCURS
SQLCODE -372, Error: ONLY ONE ROWID OR IDENTITY COLUMN IS ALLOWED IN A TABLE
SQLCODE -359, Error: THE RANGE OF VALUES FOR THE IDENTITY COLUMN IS EXHAUSTED
SQLCODE -339, Error: THE SQL STATEMENT CANNOT BE EXECUTED FROM AN ASCII BASED DRDA
APPLICATION REQUESTOR TO
A V2R2 DB2 SUBSYSTEM
SQLCODE -333, Error: THE SUBTYPE OF A STRING VARIABLE IS NOT THE SAME AS THE SUBTYPE
KNOWN AT BIND TIME AND
THE DIFFERENCE CANNOT BE RESOLVED BY TRANSLATION
SQLCODE -332, Error: SYSSTRINGS DOES NOT DEFINE A TRANSLATION FROM CCSID TO
SQLCODE -331, Error: A STRING CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE IT CANNOT
BE TRANSLATED.
REASON , CHARACTER , POSITION
SQLCODE -330, Error: A STRING CANNOT BE USED BECAUSE IT CANNOT BE TRANSLATED. REASON
, CHARACTER , HOST VARIABLE
SQLCODE -327, Error: THE ROW CANNOT BE INSERTED BECAUSE IT IS OUTSIDE THE BOUND OF
THE PARTITION RANGE FOR
THE LAST PARTITION
SQLCODE -314, Error: THE STATEMENT CONTAINS AN AMBIGUOUS HOST VARIABLE REFERENCE
SQLCODE -313, Error: THE NUMBER OF HOST VARIABLES SPECIFIED IS NOT EQUAL TO THE
NUMBER OF PARAMETER MARKERS
SQLCODE -311, Error: THE LENGTH OF INPUT HOST VARIABLE NUMBER IS NEGATIVE OR GREATER
THAN THE MAXIMUM
SQLCODE -310, Error: DECIMAL HOST VARIABLE OR PARAMETER CONTAINS NON-DECIMAL DATA
SQLCODE -309, Error: A PREDICATE IS INVALID BECAUSE A REFERENCED HOST VARIABLE HAS
THE NULL VALUE
SQLCODE -305, Error: THE NULL VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE NUMBER
BECAUSE NO INDICATOR
VARIABLE IS SPECIFIED
SQLCODE -304, Error: A VALUE WITH DATA TYPE CANNOT BE ASSIGNED TO A HOST VARIABLE
BECAUSE THE VALUE IS NOT
75
Software Factory Rafael Campillo Lorenzo.
Cceres
WITHIN THE RANGE OF THE HOST VARIABLE IN POSITION WITH DATA TYPE
SQLCODE -303, Error: A VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE NUMBER
BECAUSE THE DATA TYPES ARE
NOT COMPARABLE
SQLCODE -302, Error: THE VALUE OF INPUT VARIABLE OR PARAMETER NUMBER IS INVALID OR
TOO LARGE FOR THE
TARGET COLUMN OR THE TARGET VALUE
SQLCODE -301, Error: THE VALUE OF INPUT HOST VARIABLE OR PARAMETER NUMBER CANNOT BE
USED AS SPECIFIED
BECAUSE OF ITS DATA TYPE
SQLCODE -300, Error: THE STRING CONTAINED IN HOST VARIABLE OR PARAMETER IS NOT NUL-
TERMINATED
SQLCODE -250, Error: THE LOCAL LOCATION NAME IS NOT DEFINED WHEN PROCESSING A THREE-
PART OBJECT NAME
SQLCODE -240, Error: THE PART CLAUSE OF A LOCK TABLE STATEMENT IS INVALID
SQLCODE -229, Error: THE LOCALE SPECIFIED IN A SET LOCALE OR OTHER STATEMENT THAT IS
LOCALE SENSITIVE WAS NOT FOUND
SQLCODE -220, Error: THE COLUMN IN EXPLANATION TABLE IS NOT DEFINED PROPERLY
SQLCODE -219, Error: THE REQUIRED EXPLANATION TABLE DOES NOT EXIST
SQLCODE -214, Error: AN EXPRESSION STARTING WITH IN THE CLAUSE IS NOT VALID.
REASON CODE =
SQLCODE -212, Error: IS SPECIFIED MORE THAN ONCE IN THE REFERENCING CLAUSE OF A
TRIGGER DEFINITION
SQLCODE -208, Error: THE ORDER BY CLAUSE IS INVALID BECAUSE COLUMN IS NOT PART OF
THE RESULT TABLE
SQLCODE -206, Error: IS NOT A COLUMN OF AN INSERTED TABLE, UPDATED TABLE, OR ANY
TABLE IDENTIFIED IN A
FROM CLAUSE, OR IS NOT A COLUMN OF THE TRIGGERING TABLE OF A TRIGGER
SQLCODE -198, Error: THE OPERAND OF THE PREPARE OR EXECUTE IMMEDIATE STATEMENT IS
BLANK OR EMPTY
SQLCODE -197, Error: QUALIFIED COLUMN NAMES IN ORDER BY CLAUSE NOT PERMITTED WHEN
UNION OR UNION ALL
SPECIFIED
SQLCODE -191, Error: A STRING CANNOT BE USED BECAUSE IT IS INVALID MIXED DATA
SQLCODE -190, Error: ATTRIBUTES OF COLUMN IN TABLE ARE NOT COMPATIBLE WITH THE
EXISTING COLUMN
SQLCODE -189, Error: CCSID IS UNKNOWN OR INVALID FOR THE DATA TYPE OR SUBTYPE
76
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -186, Error: THE LOCAL DATE LENGTH OR LOCAL TIME LENGTH HAS BEEN INCREASED
AND EXECUTING PROGRAM
RELIES ON THE OLD LENGTH
SQLCODE -185, Error: THE LOCAL FORMAT OPTION HAS BEEN USED WITH A DATE OR TIME AND NO
LOCAL EXIT HAS BEEN INSTALLED
SQLCODE -183, Error: AN ARITHMETIC OPERATION ON A DATE OR TIMESTAMP HAS A RESULT THAT
IS NOT WITHIN THE
VALID RANGE OF DATES
SQLCODE -181, Error: THE STRING REPRESENTATION OF A DATETIME VALUE IS NOT A VALID
DATETIME VALUE
SQLCODE -173, Error: UR IS SPECIFIED ON THE WITH CLAUSE BUT THE CURSOR IS NOT READ-
ONLY
SQLCODE -171, Error: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT OF IS INVALID
SQLCODE -164, Error: DOES NOT HAVE THE PRIVILEGE TO CREATE A VIEW WITH QUALIFICATION
SQLCODE -161, Error: THE INSERT OR UPDATE IS NOT ALLOWED BECAUSE A RESULTING ROW DOES
NOT SATISFY THE VIEW DEFINITION
SQLCODE -160, Error: THE WITH CHECK OPTION CANNOT BE USED FOR THE SPECIFIED VIEW
SQLCODE -159, Error: DROP OR COMMENT ON IDENTIFIES A(N) RATHER THAN A(N)
SQLCODE -158, Error: THE NUMBER OF COLUMNS SPECIFIED FOR THE VIEW IS NOT THE SAME AS
THE NUMBER OF COLUMNS SPECIFIED BY THE SELECT CLAUSE, OR THE NUMBER OF COLUMNS SPECIFIED
IN THE CORRELATION CLAUSE IN A FROM CLAUSE IS NOT THE SAME AS THE NUMBER OF COLUMNS IN
THE CORRESPONDING TABLE, VIEW, TABLE EXPRESSION, OR TABLE FUNCTION
SQLCODE -157, Error: ONLY A TABLE NAME CAN BE SPECIFIED IN A FOREIGN KEY CLAUSE. IS
NOT THE NAME OF A TABLE
SQLCODE -154, Error: THE STATEMENT IS INVALID BECAUSE THE VIEW OR TABLE DEFINITION IS
NOT VALID
SQLCODE -153, Error: THE STATEMENT IS INVALID BECAUSE THE VIEW OR TABLE DEFINITION
DOES NOT INCLUDE A
UNIQUE NAME FOR EACH COLUMN
SQLCODE -152, Error: THE DROP CLAUSE IN THE ALTER STATEMENT IS INVALID BECAUSE IS A
SQLCODE -151, Error: THE UPDATE STATEMENT IS INVALID BECAUSE THE CATALOG DESCRIPTION
OF COLUMN INDICATES
THAT IT CANNOT BE UPDATED
SQLCODE -150, Error: THE OBJECT OF THE INSERT, DELETE, OR UPDATE STATEMENT IS A VIEW
OR TRANSITION TABLE
FOR WHICH THE REQUESTED OPERATION IS NOT PERMITTED
SQLCODE -147, Error: ALTER FUNCTION FAILED BECAUSE SOURCE FUNCTIONS CANNOT BE
ALTERED
77
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -138, Error: THE SECOND OR THIRD ARGUMENT OF THE SUBSTR FUNCTION IS OUT OF
RANGE
SQLCODE -136, Error: SORT CANNOT BE EXECUTED BECAUSE THE SORT KEY LENGTH IS GREATER
THAN 4000 BYTES
SQLCODE -134, Error: IMPROPER USE OF LONG STRING COLUMN OR AN EXPRESSION OF MAXIMUM
LENGTH GREATER THAN 255
SQLCODE -131, Error: STATEMENT WITH LIKE PREDICATE HAS INCOMPATIBLE DATA TYPES
SQLCODE -130, Error: THE ESCAPE CLAUSE CONSISTS OF MORE THAN ONE CHARACTER, OR THE
STRING PATTERN CONTAINS
AN INVALID OCCURRENCE OF THE ESCAPE CHARACTER
SQLCODE -129, Error: THE STATEMENT CONTAINS TOO MANY TABLE NAMES
SQLCODE -126, Error: THE SELECT STATEMENT CONTAINS BOTH AN UPDATE CLAUSE AND AN ORDER
BY CLAUSE
SQLCODE -125, Error: AN INTEGER IN THE ORDER BY CLAUSE DOES NOT IDENTIFY A COLUMN OF
THE RESULT
SQLCODE -123, Error: THE PARAMETER IN POSITION IN THE FUNCTION MUST BE A CONSTANT
OR KEYWORD
SQLCODE -122, Error: 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
SQLCODE -121, Error: THE COLUMN IS IDENTIFIED MORE THAN ONCE IN THE INSERT OR UPDATE
OR SET TRANSITION VARIABLE STATEMENT
SQLCODE -120, Error: A WHERE CLAUSE, SET CLAUSE, VALUES CLAUSE, OR A SET ASSIGNMENT
STATEMENT INCLUDES A
COLUMN FUNCTION
SQLCODE -119, Error: A COLUMN IDENTIFIED IN A HAVING CLAUSE IS NOT INCLUDED IN THE
GROUP BY CLAUSE
SQLCODE -118, Error: THE OBJECT TABLE OR VIEW OF THE DELETE OR UPDATE STATEMENT IS
ALSO IDENTIFIED IN A FROM CLAUSE
SQLCODE -117, Error: THE NUMBER OF ASSIGNED VALUES IS NOT THE SAME AS THE NUMBER OF
SPECIFIED OR IMPLIED
COLUMNS
SQLCODE -114, Error: THE LOCATION NAME DOES NOT MATCH THE CURRENT SERVER
SQLCODE -112, Error: THE OPERAND OF A COLUMN FUNCTION IS ANOTHER COLUMN FUNCTION
SQLCODE -111, Error: A COLUMN FUNCTION DOES NOT INCLUDE A COLUMN NAME
78
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE -107, Error: THE NAME IS TOO LONG. MAXIMUM ALLOWABLE SIZE IS
SQLCODE -104, Error: ILLEGAL SYMBOL "". SOME SYMBOLS THAT MIGHT BE LEGAL ARE:
SQLCODE -097, Error: THE USE OF LONG VARCHAR OR LONG VARGRAPHIC IS NOT ALLOWED IN
THIS CONTEXT
SQLCODE -079, Error: QUALIFIER FOR DECLARED GLOBAL TEMPORARY TABLE OR INDEX MUST BE
SESSION, NOT
SQLCODE 012, Warning: THE UNQUALIFIED COLUMN NAME WAS INTERPRETED AS A CORRELATED
REFERENCE
SQLCODE 100, NOT FOUND:ROW NOT FOUND FOR FETCH, UPDATE, OR DELETE, OR THE RESULT OF A
QUERY IS AN EMPTY TABLE
SQLCODE 110, Warning: SQL UPDATE TO A DATA CAPTURE TABLE NOT SIGNALED TO ORIGINATING
SUBSYSTEM
SQLCODE 111, Warning: THE SUBPAGES OPTION IS NOT SUPPORTED FOR TYPE 2 INDEXES
SQLCODE 117, Warning: THE NUMBER OF INSERT VALUES IS NOT THE SAME AS THE NUMBER OF
OBJECT COLUMNS
SQLCODE 162, Warning: TABLE SPACE . HAS BEEN PLACED IN CHECK PENDING
SQLCODE 203, Warning: THE QUALIFIED COLUMN NAME WAS RESOLVED USING A NON-UNIQUE OR
UNEXPOSED NAME
SQLCODE 206, Warning: IS NOT A COLUMN OF AN INSERTED TABLE, UPDATED TABLE, OR ANY
TABLE IDENTIFIED IN A FROM CLAUSE
SQLCODE 218, Warning: THE SQL STATEMENT REFERENCING A REMOTE OBJECT CANNOT BE
EXPLAINED
SQLCODE 219, Warning: THE REQUIRED EXPLANATION TABLE DOES NOT EXIST
SQLCODE 220, Warning: THE COLUMN IN EXPLANATION TABLE IS NOT DEFINED PROPERLY
SQLCODE 236, Warning: SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED FOR COLUMNS
SQLCODE 237, Warning: SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED BECAUSE AT
LEAST ONE OF THE COLUMNS
BEING DESCRIBED IS A DISTINCT TYPE
79
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE 238, Warning: SQLDA INCLUDES SQLVAR ENTRIES, BUT SQLVAR ENTRIES ARE NEEDED
FOR COLUMNS BECAUSE
AT LEAST ONE OF THE COLUMNS BEING DESCRIBED IS A LOB
SQLCODE 239, Warning: SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED FOR COLUMNS
BECAUSE AT LEAST ONE
OF THE COLUMNS BEING DESCRIBED IS A DISTINCT TYPE
SQLCODE 304, Warning: A VALUE WITH DATA TYPE CANNOT BE ASSIGNED TO A HOST VARIABLE
BECAUSE THE VALUE IS
NOT WITHIN THE RANGE OF THE HOST VARIABLE IN POSITION WITH DATA TYPE
SQLCODE 331, Warning: THE NULL VALUE HAS BEEN ASSIGNED TO A HOST VARIABLE BECAUSE THE
STRING CANNOT BE
TRANSLATED. REASON , CHARACTER , HOST VARIABLE
SQLCODE 339, Warning: THE SQL STATEMENT HAS BEEN SUCCESSFULLY EXECUTED BUT THERE MAY
BE SOME CHARACTER
CONVERSION INCONSISTENCIES
SQLCODE 394, Warning: USER SPECIFIED OPTIMIZATION HINTS USED DURING ACCESS PATH
SELECTION
SQLCODE 395, Warning: USER SPECIFIED OPTIMIZATION HINTS ARE INVALID (REASON CODE =
''). THE OPTIMIZATION HINTS ARE IGNORED
SQLCODE 403, Warning: THE LOCAL OBJECT REFERENCED BY THE CREATE ALIAS STATEMENT DOES
NOT EXIST
SQLCODE 462, Warning: EXTERNAL FUNCTION OR PROCEDURE (SPECIFIC NAME ) HAS RETURNED A
WARNING SQLSTATE, WITH DIAGNOSTIC TEXT
SQLCODE 464, Warning: PROCEDURE RETURNED QUERY RESULT SETS, WHICH EXCEEDS THE
DEFINED LIMIT
SQLCODE 494, Warning: NUMBER OF RESULT SETS IS GREATER THAN NUMBER OF LOCATORS
SQLCODE 495, Warning: ESTIMATED PROCESSOR COST OF PROCESSOR SECONDS ( SERVICE UNITS)
IN COST CATEGORY EXCEEDS A RESOURCE LIMIT WARNING THRESHOLD OF SERVICE UNITS SQLCODE
535, Warning: THE RESULT OF THE POSITIONED UPDATE OR DELETE MAY DEPEND ON THE ORDER OF
THE ROWS
SQLCODE 541, Warning: THE REFERENTIAL OR UNIQUE CONSTRAINT HAS BEEN IGNORED BECAUSE
IT IS A DUPLICATE
SQLCODE 551, Warning: DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION ON OBJECT
SQLCODE 552, Warning: DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION
SQLCODE 561, Warning: THE ALTER, INDEX, REFERENCES, AND TRIGGER PRIVILEGES CANNOT BE
GRANTED TO PUBLIC AT ALL LOCATIONS
SQLCODE 562, Warning: A GRANT OF A PRIVILEGE WAS IGNORED BECAUSE THE GRANTEE ALREADY
HAS THE PRIVILEGE FROM THE GRANTOR
SQLCODE 585, Warning: THE SCHEMA NAME APPEARS MORE THAN ONCE IN THE CURRENT PATH
SQLCODE 599, Warning: COMPARISON FUNCTIONS ARE NOT CREATED FOR A DISTINCT TYPE BASED
ON A LONG STRING DATA TYPE
SQLCODE 625, Warning: THE DEFINITION OF TABLE HAS BEEN CHANGED TO INCOMPLETE
80
Software Factory Rafael Campillo Lorenzo.
Cceres
SQLCODE 626, Warning: DROPPING THE INDEX TERMINATES ENFORCEMENT OF THE UNIQUENESS OF
A KEY THAT WAS DEFINED
WHEN THE TABLE WAS CREATED
SQLCODE 645, Warning: WHERE NOT NULL IS IGNORED BECAUSE THE INDEX KEY CANNOT CONTAIN
NULL VALUES
SQLCODE 650, Warning: THE TABLE BEING CREATED OR ALTERED CAN NOT BECOME A DEPENDENT
TABLE
SQLCODE 653, Warning: TABLE IN PARTITIONED TABLE SPACE IS NOT AVAILABLE BECAUSE ITS
PARTITIONED INDEX HAS
NOT BEEN CREATED
SQLCODE 655, Warning: STOGROUP HAS BOTH SPECIFIC AND NON-SPECIFIC VOLUME IDS. IT
WILL NOT BE ALLOWED IN
FUTURE RELEASES.
SQLCODE 658, Warning: THE SUBPAGES VALUE IS IGNORED FOR THE CATALOG INDEX
SQLCODE 664, Warning: THE INTERNAL LENGTH OF THE LIMIT-KEY FIELDS FOR THE PARTITIONED
INDEX EXCEEDS THE
LENGTH IMPOSED BY THE INDEX MANAGER
SQLCODE 738, Warning: DEFINITION CHANGE OF MAY REQUIRE SIMILAR CHANGE ON READ-ONLY
SYSTEMS
SQLCODE 799, Warning: A SET STATEMENT REFERENCES A SPECIAL REGISTER THAT DOES NOT
EXIST AT THE SERVER SITE
SQLCODE 802, Warning: EXCEPTION ERROR HAS OCCURRED DURING OPERATION ON DATA,
POSITION
SQLCODE 806, Warning: BIND ISOLATION LEVEL RR CONFLICTS WITH TABLESPACE LOCKSIZE PAGE
OR LOCKSIZE ROW AND LOCKMAX 0
SQLCODE 807, Warning: THE RESULT OF DECIMAL MULTIPLICATION MAY CAUSE OVERFLOW
SQLCODE 863, Warning: THE CONNECTION WAS SUCCESSFUL BUT ONLY SBCS WILL BE SUPPORTED
SQLCODE 883, Warning: ROLLBACK TO SAVEPOINT OCCURRED WHEN THERE WERE OPERATIONS THAT
CANNOT BE UNDONE OR AN OPERATION THAT CANNOT BE UNDONE OCCURRED WHEN THERE WAS A
SAVEPOINT OUTSTANDING
81
Software Factory Rafael Campillo Lorenzo.
Cceres
82
Software Factory Rafael Campillo Lorenzo.
Cceres
-122 SE INTENTA HACER UNA SELECT CON GROUP BY EN LA QUE EXISTEN CAMPOS EN LA SELECT QUE NO
ESTAN EN EL GROUP BY.
-125 UN ENTERO EN LA CLAUSULA ORDER BY NO IDENTIFICA LA COLUMNA DEL RESULTADO.
-126 UNA SENTENCIA CONTIENE A LA VEZ LAS CLAUSULAS FOR UPDATE Y ORDER BY.
-127 NOS DIO CUANDO INTENTAMOS HACER DOS SENTENCIAS: SELECT COUNT (DISTINCT XXXXXXXX) EN LA
MISMA SENTENCIA SQL.
-128 UTILIZACION INCORRECTA DE 'NULL'.
-129 LA SENTENCIA SQL TIENE DEMASIADOS NOMBRES DE TABLA.
-131 SENTENCIA CON ATRIBUTOS SEMEJANTES TIENEN TIPOS DE DATOS NO COMPATIBLES.
-132 UN ATRIBUTO ES INVALIDO PORQUE EL PRIMER OPERANDO NO ES UN NOMBRE DE CAMPO O EL
SEGUNDO NO ES UNA CADENA.
-133 HAY UNA FUNCION SQL ERRONEA EN UNA CLAUSULA HAVING PORQUE SE ESTA APLICANDO UN
OPERADOR ARITMETICO A UNA REFERENCIA
CORRELATIVA.
-134 SE HA HECHO UN USO INAPROPIADO DE UN CAMPO DE LA TABLA DEFINIDO COMO UN 'LONG STRING' O
DE UNA VARIABLE DEL HOST O SU LONGITUD
ES MAYOR QUE 254.
-136 NO SE PUEDE HACER UN SORT PORQUE LA LONGITUD DE LA CLAVE DE ORDENACION ES MAYOR QUE
4000.
-144 LA SECCION NUMERO NNNNN ES INVALIDA. SE HA MODIFICADO ALGUN DBRM INCLUIDO EN EL PLAN DB2
Y NO SE HA EFECTUADO EL BIND.
-150 EL OBJETO PARA LA SENTENCIA INSERT, DELETE O UPDATE ES UNA VISTA PARA LA CUAL LA
OPERACIN SOLICITADA NO ESTA PERMITIDA.
-151 LA COLUMNA NO PUEDE SER ACTUALIZADA PORQUE ESTA INCLUIDA EN UNA CLAVE PARTICIONADA, EN
UN ESPACIO PARA TABLA PARTICIONADO O ES EL
RESULTADO DE UNA FUNCION O EXPRESION SQL.
-153 LA SENTENCIA CREATE VIEW (CREAR VISTA ) NO INCLUYE NINGUN NOMBRE DE COLUMNA.
-154 LA SENTENCIA CREATE VIEW (CREAR VISTA ) HA FALLADO PORQUE LA DE COLUMNA.
-155 LA CLAUSULA 'FROM' ES INVALIDA PORQUE UNA DE LAS TABLAS ES UNA VISTA QUE INCLUYE UNA
CLAUSULA 'GROUP BY'.
-156 ALGUNA SENTENCIA 'ALTER TABLE', 'DROP TABLE', 'LOCK TABLE' O 'CREATE INDEX' IDENTIFICA A UNA
VISTA.
-158 EL NUMERO DE COLUMNAS ESPECIFICADO PARA LA VISTA NO ES EL MISMO QUE EL DE LA CLAUSULA
SELECT.
-159 EL NOMBRE ESPECIFICADO EN UNA 'DROP VIEW' ES UN NOMBRE DE TABLA.
-160 LA OPCION 'WITH CHECK' NO PUEDE SER UTILIZADA EN LA VISTA ESPECIFICADA.
-161 LA SENTENCIA SELECT O UPDATE NO ESTA PERMITIDA PORQUE LA FILA RESULTANTE NO SATISFACE LA
DEFINICION DE LA VISTA.
-164 NO SE TIENEN LOS PRIVILEGIOS PARA CREAR UNA VISTA CON CALIFICACION 'WITH'.
-180 UN CAMPO DE UNA TABLA DB2 DEFINIDO COMO DATE CONTIENE UNA SINTAXIS ERRONEA O VALORES
INVALIDOS. POR EJEMPLO UNA FECHA A BLANCOS
O SIN GUIONES.
-181 UN CAMPO DE UNA TABLA DB2 DEFINIDO COMO DATE O COMO TMESTAMP CONTIENE VALORES
INVALIDOS, FUERA DE RANGO. POR EJEMPLO UNA
FECHA : 1993-10-35 O UNA HORA: 12.68,15
-198 EL OPERANDO DE UNA SENTENCIA INTERACTIVA ESTA A BLANCOS O VACIO.
-199 ERROR AL CODIFICAR ALGUNA SENTENCIA DB2 POR SPUFI (FALTA O SOBRA ALGUN PARAMETRO). AL
HACER UNA INSERT POR SPUFI CON VALUES EN
TODOS LOS CAMPOS SI ESTA ASTERISCADA LA LINEA ULTIMA CON PARTE DE LOS VALUES Y CON EL
PARENTESIS Y PUNTO Y COMA DA ESTE CODIGO.
AL HACER UNA SELECT POR SPUFI AL FINAL DE LOS CAMPOS SELECCIONADOS HABIA UNA COMA. USO
ILEGAL DE UNA PALABRA CLAVE O ESTA
ESPERANDO UN COMANDO.
-203 HAY UN NOMBRE DE COLUMNA AMBIGUO ( HAY MAS DE UNO O NO SE LE PUEDE UBICAR POR
INCONSISTENCIA EN SU REFERENCIA).
-204 LA TABLA DB2 NO EXISTE. LOS CAMPOS DE LA TABLA ESTAN MAL DEFINIDOS ( NO COINCIDE LA PICTURE
DE LA DEFINICION DE LA TABLA CON LA IOAREA
DE LA "DESA.MASCARA1". SUCEDI EN LA OPEN DE UN CURSOR DEBIDO A QUE EN LA SELECT DEL
DECLARE CURSOR HABIA ESCRITO UN CAMPO CON
DISTINTO NOMBRE AL QUE EXISTIA COMO NOMBRE DE COLUMNA EN LA TABLA DB2. SUCEDI AL HACER
UNA DELETE CON CURSOR PORQUE EN LA
DELETE FALTABA LA PALABRA 'FROM'. SUCEDI AL HACER PUBLICO EL PLAN DE UN PROGRAMA DEL
QUE SE HABIA HECHO EL FREE PERO NO SE
HABIA COMPILADO, CON LO CUAL NO EXISTE EL NOMBRE DEL PROGRAMA.
-205 HAY UN NOMBRE DE COLUMNA QUE NO ESTA EN LA TABLA.
-206 COLUMNA EN UNA INSERT O UPDATE QUE NO ESTA EN LA TABLA DE LA CLAUSULA FROM. SUCEDI AL
HACER UNA SELECT EN LA QUE SE HABIA PUESTO
EN LA ' WHERE' UN NOMBRE DE COLUMNA QUE NO EXISTIA EN LA TABLA REFERENCIADA EN EL 'FROM'.
TAMBIEN SUCEDI AL PONER EN LA SELECT UN
CAMPO QUE NO ERA UN NOMBRE DE COLUMNA.
-207 LA CLAUSULA 'ORDER BY' ES INVALIDA PORQUE INCLUYE UN NOMBRE DE COLUMNA PERO ESTA
UTILIZADA COMO RESULTADO DE UNA UNION.
-208 SUCEDI AL DECLARAR UN CURSOR CON 'ORDER BY' EN EL QUE LOS CAMPOS DEL ORDER BY NO SE
ESTABAN SELECCIONANDO.
-219 EL NOMBRE DE UNA TABLA EN UNA DECLARE NO EXISTE.
-220 HAY UN NOMBRE DE COLUMNA EN UNA DECLARE QUE NO ESTA DEFINIDA CORRECTAMENTE.
-301 EL VALOR DE UNA COLUMNA DE LA TABLA NO SE PUEDE UTILIZAR PORQUE ES DE UN TIPO 'DATA'.
83
Software Factory Rafael Campillo Lorenzo.
Cceres
-302 CUANDO SE REALIZA UNA INSERT, Y LA DUMMY DE LA TABLA ES DE DISTINTA LONGITUD QUE LA TABLA
DB2. OCURRE TAMBIEN, CUANDO SE HAN INCLUIDO
COLUMNAS EN LA TABLA, Y NO SE INICIALIZAN EN EL PROGRAMA. SE MOVIA UN CAMPO WORKING PIC
X(10), A UN CAMPO DE LA DCL DE LA TABLA QUE
ESTABA DEFINIDO COMO NUMERICO DE MENOR LONGITUD.
-303 CUANDO LAS COLUMNAS DE LA SELECT EN EL DECLARE CURSOR NO ESTAN REFERENCIADAS EN LA
FETCH. LOS CAMPOS DE LA TABLA ESTAN MAL
DEFINIDOS (NO COINCIDE LA PICTURE DE LA DEFINICION DE LA TABLA CON LA DE LA IOAREA DE LA
"DESA.MASCARA1") Y AL EJECUTAR EN BTS DEVUELVE
ESTE CODIGO.
-304 HAY UN VALOR QUE NO PUEDE SER ASIGNADO A UNA COLUMNA DE LA TABLA PORQUE ESTA FUERA
DEL RANGO DEL TIPO DE DATOS DE ESA COLUMNA.
-305 DA AL UTILIZAR CUALQUIERA DE LAS FUNCIONES PREDEFINIDAS: MAX, MIN, SUM, AVG O COUNT, Y NO
EXISTE NINGUNA FILA EN LA TABLA O LAS FILAS QUE
EXISTEN NO CUMPLEN LAS CONDICIONES DE LA WHERE. SI LA FUNCION PREDEFINIDA UTILIZADA ES LA
COUNT, ESTA DEVUELVE SQLCODE +0 EN VEZ DE
-305 (EN PC Y EN HOST) TANTO SI EXISTEN FILAS COMO SI NO, POR LO QUE HABRA QUE PREGUNTAR SI
EL CONTADOR ES MAYOR O IGUAL A CERO PARA
SABER SI HA ENCONTRADO FILAS O NO. EL VALOR NULL NO SE PUEDE ASIGNAR A UNA COLUMNA DE LA
TABLA PORQUE NO ESTA DEFINIDA COMO
VARIABLE. AL RECUPERAR UNA FILA CON UNA FECHA A BLANCOS QUE TIENE FORMATO 'DATE'.
-309 EL ATRIBUTO ES INVALIDO PORQUE EL CAMPO DE LA TABLA TIENE VALOR NULO.
-310 UN CAMPO NUMERICO CONTIENE VALORES RAROS.
-311 EL INDICADOR DE LONGITUD DE UN CAMPO DE LA TABLA ES NEGATIVO.
-312 NOMBRE DE CAMPO DE UNA TABLA NO DEFINIDO O NO SE PUEDE USAR.
-313 EL NUMERO DE CAMPOS DE LA TABLA ESPECIFICADOS NO ES EL MISMO QUE EL DE PARAMETROS
MARCADOS.
-401 EN GENERAL SUCEDE AL COMPARAR DOS CAMPOS DE DISTINTO TIPO: NUMERICO-ALFANUM., DATE-
ALFANUMERICO, ETC... CUANDO ESTAMOS
INTENTANDO MODIFICAR UNA FILA POR SPUFI CON UN VALOR ALFANUMERICO Y EL CAMPO A
MODIFICARES NUMERICO. CUANDO ESTAMOS INTENTAN-
DO HACER UNA SELECT POR SPUFI CON UN VALOR ALFANUMERICO Y VICEVERSA. CUANDO SE
SELECCIONA UN CAMPO QUE NO EXISTE EN LA TABLA.
-402 SE INTENTA HACER UNA OPERACIN ARITMETICA O UNA SUMA CON UNA COLUMNA DEFINIDA COMO
ALFANUMERICA: SUCEDI AL HACER UNA SELECT
SUM POR SPUFI, PIDIENDO QUE SUMARA UN NOMBRE DE COLUMNA DEFINIDA COMO ALFANUMERICA.
-404 CUANDO ESTAMOS INTENTANDO INSERTAR, O MODIFICAR UNA FILA CON UN VALOR QUE EXCEDE A LA
LONGITUD DETERMINADA PARA LA COLUMNA EN
EL AREA TABLA-WORKING.
-405 DIO AL ACCEDER A UNA TABLA DB2 PORQUE UN NOMBRE DE COLUMNA DE LA TABLA ESTABA DEFINIDO
COMO "COMP-3" QUE SE USABA EN LA WHERE
Y SE LE HABIA MOVIDO CONTENIDO NO NUMERICO. SE HA UTILIZADO UN LITERAL NUMERICO QUE ESTA
FUERA DE RANGO.
-406 EL VALOR NUMERICO HALLADO ESTA FUERA DEL RANGO DE LA COLUMNA OBJETO DE LA OPERACIN.
-407 EN UNA OPERACIN UPDATE O INSERT EL VALOR A ACTUALIZAR ES NULO Y EL CAMPO NO PUEDE
CONTENER NULOS.
-408 CUANDO ESTAMOS INTENTANDO INSERTAR O MODIFICAR UNA FILA CON UN VALOR NUMERICO Y LA
COLUMNA ES ALFANUMERICA. EL VALOR EN UNA
INSERT O UPDATE NO ES EL MISMO TIPO QUE LA COLUMNA QUE SE QUIERE ACTUALIZAR.
-409 OPERADOR INVALIDO EN UNA FUNCION 'COUNT'.
-410 HAY UN LITERAL EN COMA FLOTANTE QUE TIENE MAS DE 30 CARACTERES.
-411 LA CLAVE DEL USUARIO NO SE PUEDE UTILIZAR COMO SE ESPECIFICA.
-412 LA CLAUSULA SELECT DE UNA SUBSELECT ESPECIFICA MULTIPLES COLUMNAS.
-413 HAY UN DESBORDAMIENTO DURANTE UNA CONVERSION DE TIPOS DE DATOS.
-414 HAY UNA COLUMNA NUMERICA ESPECIFICADA COMO ATRIBUTO EN UNA 'LIKE'.
-415 LAS COLUMNAS CORRESPONDIENTES EN LOS OPERANDOS DE UNA CLAUSULA 'UNION' NO TIENEN LAS
MISMAS DESCRIPCIONES DE CAMPO.
-416 UN OPERANDO DE UNA 'UNION' CONTIENE UNA COLUMNA CON ATRIBUTO LONG STRING.
-417 LA SENTENCIA DE CADENA A PREPARAR INCLUYE PARAMETROS UTILIZADOS COMO OPERANDOS DEL
MISMO OPERADOR.
-418 LA SENTENCIA DE CADENA A PREPARAR INCLUYE PARAMETROS UTILIZADOS EN UNA CLAUSULA
SELECT.
-419 EL RESULTADO DE UNA DIVISION DECIMAL DIO UN VALOR NEGATIVO.
-421 LOS OPERANDOS DE UNA 'UNION' NO TIENEN EL MISMO NUMERO DE COLUMNAS.
-501 SE INTENTA LEER O CERRAR UN CURSOR QUE NO HA SIDO ABIERTO.
-502 SE INTENTA ABRIR UN CURSOR QUE YA ESTA ABIERTO.
-503 CUANDO EN UNA UPDATE SE QUIERE MODIFICAR UN CAMPO QUE NO HA SIDO ESPECIFICADO EN EL
FOR UPDATE AL CREAR EL CURSOR.
-504 EL CURSOR ESPECIFICADO NO HA SIDO DEFINIDO.
-507 EL CURSOR ESPECIFICADO PARA LA UPDATE O DELETE NO SE HA ABIERTO.
-508 EL CURSOR ESPECIFICADO PARA LA UPDATE O DELETE NO SE HA POSICIONADO CORRECTAMENTE. SE
INTENTA HACER UPDATE O DELETE DE UNA FILA
QUE NO EXISTE (SQLCODE DEL CURSOR ES +100).
-509 SE PRODUCE CUANDO DECLARAMOS UN CURSOR PARA UNA TABLA Y AL HACER EL ACCESO LO
UTILIZAMOS PARA OTRA TABLA.
-510 SE PRODUCE CUANDO SE INTENTA MODIFICAR UNA COLUMNA DE UNA TABLA QUE NO ESTA EN LA
SELECT DEL CURSOR O QUE NO SE HA PUESTO EN LA
84
Software Factory Rafael Campillo Lorenzo.
Cceres
CLAUSULA FOR UPDATE OF. (ESTE ERROR DA EN EL BIND EN COMPILACION). LA TABLA DESIGNADA EN
EL DECLARE DEL CURSOR PARA MODIFICAR O
BORRAR DICHA TABLA, NO PUEDE MODIFICARSE O BORRARSE (DEBIDO A QUE FALTA EN EL DECLARE
CURSOR LA CLAUSULA "FOR UPDATE OF...".
-511 LA CLAUSULA 'FOR UPDATE' NO SE PUEDE UTILIZAR PORQUE LA TABLA UTILIZADA POR EL CURSOR NO
SE PUEDE MODIFICAR.
-514 EL CURSOR UTILIZADO NO ESTA PREPARADO.
-516 LA SENTENCIA DE DESCRIPCION NO IDENTIFICA UNA SENTENCIA PREPARADA.
-517 EL CURSOR UTILIZADO NO SE PUEDE UTILIZAR PORQUE NO ESTA DEFINIDO EN LA SENTENCIA SELECT
CORRESPONDIENTE.
-518 LA SENTENCIA EJECUTADA NO ES UNA SENTENCIA SELECT VALIDA.
-519 LA SENTENCIA DE PREPARACION IDENTIFICA LA SENTENCIA DE SELECCIN DEL CURSOR ABIERTO
NOMBRE-DE-CURSOR.
-530 SE INTENTA DAR DE ALTA O MODIFICAR EN UNA TABLA CON INTEGRIDAD REFERENCIAL Y NO EXISTE EL
PADRE DE LA RELACION.
-535 EN UNA UPDATE CON CURSOR, NO SE PUEDEN PONER LOS CAMPOS QUE SON CLAVE E INDICE UNICO.
-540 SE INTENTA CREAR UNA TABLA QUE TIENE INTEGRIDAD REFERENCIAL SIN HABER CREADO ANTES LA
TABLA O EL/LOS INDICE/S DE LA TABLA PADRE.
-551 NO SE TIENE PRIVILEGIO PARA REALIZAR ALGUNA OPERACIN .POR EJEMPLO AL HACER EL CREATE DE
UNA TABLA DB2. TAMBIEN PUEDE OCURRIR
POR: EL OBJETO DB2 NO EXISTE. EL OBJETO ESTA EN ESTADO READ ONLY. SE ESTA INTENTANDO
CREAR UN OBJETO CON UN AUTHORIZATION-ID QUE
NO TIENE AUTORIZACION PARA DICHA FUNCION. SI SE ESTA HACIENDO UN CREATE O UN ALTER DE
UNA TABLA DEFINIDA CON INTEGRIDAD REFERENCIAL
Y NO SE TIENE AUTORIZACION.
-552 EL USUARIO NO TIENE PRIVILEGIOS, PARA HACER LA OPERACIN.
-554 UN USUARIO AUTORIZADO NO PUEDE CONCEDERSE PRIVILEGIOS A SI MISMO.
-555 UN USUARIO AUTORIZADO NO PUEDE REVOCARSE PRIVILEGIOS A SI MISMO.
-556 UN PRIVILEGIO NO SE PUEDE REVOCAR PORQUE NO LO PUEDE MODIFICAR EL USUARIO(PARAMETRO1).
-557 COMANDO GRANT/REVOKE (PARAMETRO1) ERRONEO, LOS MANDATOS PERMITIDOS SON
(PARAMETRO2).
+558 LA OPCION 'WITH' DE UNA GRANT ES IGNORADA PORQUE LA GRANT ES PUBLICA (WARNING).
-559 TODAS LAS FUNCIONES AUTORIZADAS HAN SIDO DESACTIVADAS.
+560 LA OPCION WITH DE UNA GRANT ES IGNORADA PARA ACTUALIZAR COLUMN-LIST (WARNING).
-601 SE INTENTA CREAR ALGO QUE YA ESTA CREADO.
-602 SE HAN ESPECIFICADO DEMASIADAS COLUMNAS AL INTENTAR CREAR UN INDICE.
-603 SE INTENTA CREAR UN INDICE QUE EN SU TABLA CORRESPONDIENTE TIENE FILAS CON LA CLAVE
REPETIDA.
-604 LA DEFINICION DE UNA COLUMNA TIENE ERRORES EN SU LONGITUD, PRECISION O ATRIBUTOS.
-607 LA OPERACIN (PARAMETRO1) NO ESTA DEFINIDA PARA LAS TABLAS.
-612 LA COLUMNA (PARAMETRO1) ESTA DUPLICADA.
-614 EL INDICE NO SE PUEDE CREAR PORQUE LA SUMA INTERNA DE LAS LONGITUDES DE SUS CAMPOS
CORRESPONDIENTES ES MAYOR QUE EL MAXIMO
PERMITIDO.
-616 EL OBJETO (PARAMETRO1) NO SE PUEDE BORRAR PORQUE ES UTILIZADO POR EL OBJETO
(PARAMETRO2).
-618 LA OPERACIN (PARAMETRO1) NO ESTA PERMITIDA EN EL SISTEMA DE BASES DE DATOS.
-619 OPERACIN NO PERMITIDA PORQUE LA BASE DE DATOS DE TRABAJO NO ESTA INACTIVA.
-620 EL COMANDO (PARAMETRO1) EN SENTENCIA (PARAMETRO2) NO ESTA PERMITIDO PARA EL ESPACIO DE
TABLAS EN LA BASE DE DATOS DE TRABAJO.
-623 YA EXISTE ESTE INDICE PARA LA TABLA (PARAMETRO1).
-636 LA CLAVE PARTICIONADA NO TIENE ESPECIFICADO SI ES EN ORDEN ASCENDENTE O DESCENDENTE.
-637 LA CLAVE ESTA DUPLICADA.
-644 EL VALOR ESPECIFICADO PARA LA CLAVE (PARAMETRO1) EN LA SENTENCIA (PARAMETRO2) ES
ERRONEO.
-646 LA TABLA (PARAMETRO1) NO SE PUEDE CREAR EN EL ESPACIO PARA TABLAS (PARTICIONADO/POR
DEFECTO)(PARAMETRO2) PORQUE YA ESTA
OCUPADO POR OTRA TABLA.
-647 EL BUFFER COMUN (PARAMETRO1) NO SE PUEDE UTILIZAR PORQUE NO HA SIDO ACTIVADO.
-652 VIOLACION DEL PROCEDIMIENTO DE EDICION O DE VALIDACION(PARAMETRO1) DE LA INSTALACION.
-653 LA TABLA (PARAMETRO1) EN EL ESPACIO PARTICIONADO PARA TABLAS(PARAMETRO2) NO ESTA
DISPONIBLE PORQUE EL INDICE CORRESPONDIENTE
NO HA SIDO CREADO.
-660 EL INDICE (PARAMETRO1) NO SE PUEDE CREAR EN EL ESPACIO PARTICIONADO PARA TABLAS
(PARAMETRO2)PORQUE NO SE HAN ESPECIFICADO LOS
LIMITES PARA LA CLAVE.
-661 EL INDICE (PARAMETRO1) NO SE PUEDE CREAR EN EL ESPACIO PARTICIONADO PARA TABLAS
(PARAMETRO2)PORQUE EL NUMERO DE PARTES
ESPECIFICADO NO ES IGUAL AL NUMERO DE PARTICIONES DEL ESPACIO PARA TABLAS.
-662 EL INDICE PARTICIONADO NO SE PUEDE CREAR EN EL ESPACIO NO PARTICIONADO PARA TABLAS
(PARAMETRO1).
-663 EL NUMERO DE VALORES POSIBLES PARA LA CLAVE ES ZERO O MAYOR QUE EL NUMERO DE
COLUMNAS EN LA CLAVE INDICE (PARAMETRO1).
-664 LA LONGITUD INTERNA DE LOS CAMPOS CLAVE-LIMITE DEL INDICE PARTICIONADO (PARAMETRO1)
EXCEDE DE LA LONGITUD IMPUESTA POR EL GESTOR
DE INDICES.
-665 LA CLAUSULA PART DE UNA SENTENCIA ALTER HA SIDO OMITIDA O ES ERRONEA.
85
Software Factory Rafael Campillo Lorenzo.
Cceres
-666 PENDIENTE DE UNA UTILIDAD: UNA VEZ ESTABA 'COPY PENDING': SOLUCION : DESDE LA OPCION 7
(COMANDOS) DEL DB2: START DATABASE
(BT999PROG) SPACENAN (ETXXXXXX) ACCESS (FORCE).
-667 UN GRUPO DE INDICES DE UN ESPACIO PARTICIONADO PARA TABLAS NO PUEDE SER EXPLICITAMENTE
BORRADO.
-668 NO SE PUEDE CREAR UNA NUEVA COLUMNA PORQUE LA TABLA SE ESTA EDITANDO.
-669 UNA TABLA DE UN ESPACIO PARTICIONADO PARA TABLAS NO PUEDE SER EXPLICITAMENTE BORRADA.
-670 LA LONGITUD DEL REGISTRO DE LA TABLA EXCEDE EL MARCO DE PAGINA.
-671 EL ATRIBUTO DE BUFFER COMUN DEL ESPACIO PARA TABLAS NO SE PUEDE CAMBIAR PORQUE ESTO
CAMBIARIA EL TAMAO DE LA PAGINA DEL
ESPACIO PARA TABLAS.
-676 NO SE PUEDE UTILIZAR PARA UN INDICE UNA PAGINA DE 32 K DEL ESPACIO PARA TABLAS.
-677 NO HAY SUFICIENTE ESPACIO VIRTUAL PARA LA EXPANSION DEL BUFFER COMUN.
-678 EL LITERAL (PARAMETRO1) ESPECIFICADO COMO VALOR LIMITE DEL INDICE DEBE ESTAR DE ACUERDO
CON EL TIPO DE DATO (PARAMETRO2) DE LA
COLUMNA CORRESPONDIENTE (PARAMETRO3).
-679 SE INTENTA HACER EL DROP Y LA CREATE DE UNA TABLA, EL DROP LO REALIZA BIEN PERO NO LA
CREATE DEBIDO A QUE SE NECESITA HACER UN
COMMIT ENTRE EL DROP Y LA CREATE DE LA TABLA DB2.
-680 LA TABLA TIENE DEMASIADAS COLUMNAS.
-681 LA COLUMNA (PARAMETRO1) HA VIOLADO LOS PROCEDIMIENTOS DE DEFINICIN DE CAMPOS DE LA
INSTALACION. RT: CODIGO-RETORNO
RS: REASON-CODE MSG: MENSAJE.
-682 PROCEDIMIENTO (PARAMETRO1) NO PUEDE SER CARGADO.
-683 TIPO DE COLUMNA (PARAMETRO1) INVALIDO PARA ESTE PROCEDIMIENTO.
-684 LA LONGITUD DEL LITERAL QUE COMIENZA CON ( PARAMETRO1) ES DEMASIADO LARGA.
-685 TIPO DE CAMPO INVALIDO, NOMBRE-DE-COLUMNA.
-686 NO SE PUEDEN COMPARAR DOS COLUMNAS DE DIFERENTE TIPO.
-687 DOS TIPOS DE DATOS QUE NO SE PUEDEN COMPARAR.
-688 DATOS INCORRECTOS DEVUELTOS POR EL PROCEDIMIENTO (PARAMETRO1, PARAMETRO2).
-802 HA HABIDO UNA DIVISION POR ZERO O UN DESBORDAMIENTO (OVERFLOW) ARITMETICO.
-803 SE INTENTA INSERTAR UNA FILA CON CLAVE YA EXISTENTE.MODIFICAR EL INDICE UNICO DE UNA FILA
(INSERTAR Y YA EXISTE).
-804 UN ERROR HA SIDO ENCONTRADO EN EL PGM, EN LOS PARAMETROS DE ENTRADA PARA EL SQL
STATEMENT: OCURRIO AL DESBORDARSE UNA TABLA
WORKING MACHACANDO LA SQLDA DE DB2. OCURRIO UNA VEZ QUE SISTEMAS HABIA MODIFICADO EL
PROCEDIMIENTO DE COMPILACION...
OCURRIO CON UNA LECTURA IMS, EN LA QUE SE INDICO UNA LONGITUD MAYOR QUE LA INFORMACION
ENVIADA, POR LO QUE SE MACHACABA LA SQLCA...
SE HA DECLARADO UNA TABLA WORKING CON MENOS FILAS DE LAS NECESARIAS.
-805 NOMBRE DEL PROGRAMA (PARAMETRO1) NO ENCONTRADO EN EL PLAN (PARAM2); OCURRE CUANDO
EL MODULO EN EL QUE ESTA ACCEDIENDO A DB2
NO ESTA EN EL PASO BIND DEL JCL, O BIEN AUSENCIA DEL MODULO EN LA DBRM, PRODUCIDO POR NO
EXISTIR EN LA TSOXX.PGMPRUE.
-811 CUANDO SE INTENTA REALIZAR CUALQUIER CASO DE SELECT (NORMAL, JOIN, ETC.), Y SE RECUPERA
MAS DE UNA FILA.
-815 SE HA INCLUIDO UNA CLAUSULA ORDER BY O HAVING EN UNA SUBSELECT O UNA SUBCONSULTA DE UN
PREDICADO.
-817 LA SENTENCIA INSERT, UPDATE, DELETE, DDL O GRANT NO PUEDE SER EJECUTADA PORQUE LA
TRANSACCION IMS HA SIDO DEFINIDA COMO DE LECTURA
SOLUCION: GENERAR LA TRANSACCION IMS COMO LECTURA Y ACTUALIZACION.
-818 NO COINCIDEN LOS TIMESTAMP: VOLVER A COMPILAR. AL COMPILAR, EN EL PROCEDIMIENTO DE
COMPILACION EL NOMBRE DEL PLAN ESTA MAL.
ESTE ERROR SUCEDE SI: EL PROGRAMA SE HA PRECOMPILADO, COMPILADO Y LINKEDITADO, PERO NO
SE HA HECHO EL BIND.
SE HA PRECOMPILADO Y SE HA HECHO EL BIND, SIN HABER HECHO LA COMPILACION Y EL LINK-EDIT, O
LA LINK-EDIT NO HA ACABADO BIEN. EL BIND
SE HA HECHO CON UN DBRM QUE NO SE HA CREADO EN EL MISMO PROCESO DE LINK-EDIT QUE EL
MODULO CARGABLE. AL COMPILAR UN BATCH(B2),
NO SE HABIA HECHO EL FREE DEL PROGRAMA. SOLUCION: PARAR Y ARRANCAR LA REGION.
-819 LA VISTA NO SE PUEDE UTILIZAR PORQUE ES UNA REFERENCIA A OTRA VISTA QUE NO SE PUEDE
UTILIZAR.
-820 LA SENTENCIA SQL NO SE PUEDE PROCESAR PORQUE (PARAMETRO1) CONTIENE UN VALOR NO VALIDO
EN ESTA VERSION DEL PRODUCTO.
-822 LA SQLCA CONTIENE UNA DIRECCION DE DATOS O UNA DIRECCION DE INDICADOR DE VARIABLE QUE
NO ES VALIDA.
-840 DEMASIADAS FILAS DEVUELTAS POR UNA SELECT O QUE SE PRETENDEN INSERTAR
-901 NO SE EJECUTO LA SENTENCIA POR UN ERROR EN EL SISTEMA, QUE NO IMPEDIRIA LA EJECUCION DE
LAS SIGUIENTES SENTENCIAS SQL.
-904 RECURSO NO DISPONIBLE (REASON CODE 00C200F6). REINTENTAR ALGO MIGRADO O PILLADO
(REASON CODE 00C90081). AL HACER UNA "LOAD" (SI DA
ERROR) SE PUEDE QUEDAR LA TABLA CON DISPOSICION "COPY" (NO DEJA ACCEDER);
CONTENCION (DEADLOCK). EL PROCESO ESTA ESPERANDO UN RECURSO QUE ESTA UTILIZANDO OTRO
PROCESO Y A SU VEZ ESTE ESTA ESPERANDO
EL RECURSO QUE EL PRIMER PROCESO ESTA UTILIZANDO (REASON CODE 00C9008E).
EL OBJETO DB2 ESTA SIENDO UTILIZADO POR OTRO PROCESO, SU PROCESO HA ESTADO ESPERANDO
HASTA EL TIEMPO LIMITE Y LUEGO HA SIDO CANCELADO.PROCESO CON CONTENCION
86
Software Factory Rafael Campillo Lorenzo.
Cceres
-1013 (EN MICROFOCUS) EL COD-IDENT NO ESTA DEFINIDO COMO "COMP" S9(4)COMP, SI NO COMO S9(4).
-1034 FALTAN LOS DOS PUNTOS QUE PRECEDEN A LOS CAMPOS WORKING DE LA WHERE EN UNA SELECT O
EN UN CURSOR. ENTRE LOS CAMPOS SELECCIONA-
DOS DE UN CURSOR HABIA UN PUNTO EN VEZ DE UNA COMA
-1045 (EN MICROFOCUS) UN CAMPO DEL REGISTRO TRATADO (FICHERO REAL) NO ESTA EN EL FORMATO QUE
LE CORRESPONDE. EL ERROR SE PRODUCE
CUANDO SE COMPARA CON SU IGUAL EN LA TABLA DB2 DE TRABAJO.
-1084 (EN MICROFOCUS) ERROR DE ESCRITURA EN LA SENTENCIA DB2. (EJ.: ALGUNA PALABRA MAL ESCRITA,
ETC...).
-1206 (EN MICROFOCUS) EN UNA UPDATE HABIA UN CAMPO QUE NO ERA DE ESA TABLA.
-1408 -1451, -14...(OTROS) (EN MICROFOCUS)- LA TABLA DB2 POSEIA UN CAMPO DEFINIDO COMO TIMESTAMP
Y DABA PROBLEMAS AL INTENTAR REALIZAR UNA
COSULTA AL MOVERLE LOW-VALUES A ESE CAMPO. TAMBIEN SE OBTUVIERON AL INTENTAR
INSERTAREN LA TABLA YA QUE LA INSERT NO TIENE QUE
LLEVAR VALUE DE ESE CAMPO Y EN EL INTO HAN DE NOMBRARSE TODOS LOS CAMPOS EXCEPTO EL
CAMPO TIMESTAMP.
87
Software Factory Rafael Campillo Lorenzo.
Cceres
S001-5 Abend
Reading after the end of the file by non-COBOL program.
COBOL intercepts this and displays "QSAM error, status 92".
Out of space on output disk file.
S002 Abend
With variable format files used for output.
The record is larger than the track size.
The record length is greater than allowed maximum 32,768.
The wrong record length is being used on output.
The 4-byte record length indicator is wrong.
Record greater than 32,768 bytes
S013-10 Abend
A dummy file with no blocksize.
S013-14 Abend
A library has run out of space in its directory.
You have to backup, delete, and restore the library with IEBCOPY.
A dataset is sequential, but the JCL indicates that it is a library/PDS.
S013-18 Abend
A library member was specified in the JCL but was not found.
S013-20 Abend
The block size is not a multiple of record length.
Check record length in program, compare to actual record length of file
S013-34 Abend
The block size was found to be 0.
A new file is being created but block size was not in the JCL.
S013-40 Abend
Reading a file whose JCL has SYSOUT=
S106 Abend
The program on the program library was unreadable. Recompile and link.
S122 Abend
The job was canceled because it violated some restriction.
A dump was requested
S137 Abend
A tape has a bad trailer label.
Copy the file with IEBGENER, ignoring the error. The copy will be good.
Using LABEL=2 when there's only one dataset on the tape.
88
Software Factory Rafael Campillo Lorenzo.
Cceres
S213 Abend
A disk dataset was not actually on the volume stated in the VOL=SER=.
A disk dataset was not actually on the volume indicated in the catalog.
S222 Abend
The job was cancelled because it violated some restriction.
No dump was requested.
S237 Abend
The block count on a tape trailer label is wrong.
Probably caused by hardware error.
Copy the file with IEBGENER, ignoring the error. The copy will be good.
A problem with the second volume of tape or disk.
S322 Abend
The job used more CPU time than it should have.
Either the estimate is wrong or the program is in an uncontrollable loop.
S413 Abend
A volume was needed that could not be mounted.
S422 Abend
Too many job steps.
S513 Abend
Two jobs or DDNAMES wanting same tape at same time.
S522 Abend
Job was waiting too long.
S613 Abend
A bad tape label.
S637 Abend
A bad concatenation, different types of devices were used.
An unreadable tape mark or label.
S706 Abend
The program on the library was not executable.
See linkage editor report that put the program on library.
S713 Abend
The tape was unexpired and the operator terminated the job.
S714 Abend
Labels on the tape were bad.
S722 Abend
Too many lines of print.
S804 Abend
Region too small for the program.
S806 Abend
89
Software Factory Rafael Campillo Lorenzo.
Cceres
S80A Abend
Region too small for the program.
S813 Abend
Right tape volume, wrong dataset name. Right dataset name, wrong tape volume.
S913 Abend
Security violation.
SA13 Abend
Label=n states the wrong number.
SB14 Abend
No space in a library directory for this member's name.
SB37 Abend
Insufficient disk space.
SD37 Abend
Insufficient disk space.
SE37 Abend
Insufficient disk space.
the maximum number of extents would be exceeded. For instance, when exceeding 16
extents of a PDS. An E37 on tape datasets is most often caused when the number of
requested volumes is exceeded. The default is 5, therefore a request for the sixth
volume will fail with a E37.
S0C1 Abend
Executing a program with an unresolved external reference.
Calling a program and the program was not included during link edit.
An uncontrolled loop moved data on top of instructions. Reading a file that is not
open Your SORTIN DCB was not correct Mixing compile options RES and NORES in
different modules
90
Software Factory Rafael Campillo Lorenzo.
Cceres
S0C7 Abend
Program attempting to do math on illegal data.
Data is not numeric, but should be.
Moving ZEROS to group item whose subordinate items
are packed-decimal
Uninitialized packed-decimal fields.
Record description is wrong. Field starts or ends in the wrong place in the record.
Find record description of creating program.
S0CB Abend
Attempting to divide by 0 and not using ON SIZE ERROR
U1002 Abend
Conflicting file attributes. See S013.
U1005 Abend
Executing with modules compiled both with RES and NORES
U1006 Abend
Subscript out of range
U1017 Abend
Missing DD statement in JCL for DISPLAY or ACCEPT verb
U1020 Abend
Problem opening or processing a file.
Check the file status.
U1026 Abend
COBOL sort failed.
U1034 Abend
Same as SB37 Abend
U1035 Abend
Conflicting DCB parameters. Same as S013.
U1037 Abend
Program control falls through the last physical statement in program,
which is not GOBACK/STOP RUN.
U1056 Abend
Program didn't close a file before ending
U3000 Abend
COBOL LE intercepted the Abend. Messages in SYSDBOUT.
U4038 Abend
COBOL LE intercepted the Abend. Messages in CEEDUMP
91
Software Factory Rafael Campillo Lorenzo.
Cceres
*******************************************************************************
* DCLGEN TABLE(DAREPOS)
* LIBRARY(SIS.GRSIS.COPYLIB(D0204200))
* ACTION(REPLACE)
* APOST
* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS
********************************************************************************
EXEC SQL DECLARE DAREPOS TABLE
( RUR_PLANNAME CHAR(8) NOT NULL,
RUR_PROCES DECIMAL(2, 0) NOT NULL,
RUR_ESTADO CHAR(1) NOT NULL,
RUR_NUMCOMM SMALLINT NOT NULL,
RUR_PUNTEROS VARCHAR(254) NOT NULL
) END-EXEC.
********************************************************************************
* COBOL DECLARATION FOR TABLE DAREPOS
********************************************************************************
01 DCLDAREPOS.
10 RUR-PLANNAME PIC X(8).
10 RUR-PROCES PIC S99V USAGE COMP-3.
10 RUR-ESTADO PIC X(1).
10 RUR-NUMCOMM PIC S9(4) USAGE COMP.
10 RUR-PUNTEROS.
49 RUR-PUNTEROS-LEN PIC S9(4) USAGE COMP.
49 RUR-PUNTEROS-TEXT PIC X(254).
********************************************************************************
* THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 5
********************************************************************************
(volver SoporteFsico)
(Ver #LQBBN01)
92
Software Factory Rafael Campillo Lorenzo.
Cceres
**************************************************************************
* DCLGEN TABLE(DBS1.EXP01.DAPROCBATCH)
* LIBRARY(SIS.GRSIS.COPYLIB(D0204100))
* ACTION(REPLACE)
* APOST
* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS
**************************************************************************
EXEC SQL DECLARE DAPROCBATCH TABLE
( IPB_PLANNAME CHAR(8) NOT NULL,
IPB_DDNAME CHAR(8) NOT NULL,
IPB_LONREG SMALLINT NOT NULL,
IPB_LONBLK SMALLINT NOT NULL,
IPB_REGTRK SMALLINT NOT NULL,
IPB_DISPOS CHAR(4) NOT NULL,
IPB_NUMREGS SMALLINT NOT NULL,
IPB_TIPREG CHAR(3) NOT NULL
) END-EXEC.
**************************************************************************
* COBOL DECLARATION FOR TABLE DAPROCBATCH
**************************************************************************
01 DCLDAPROCBATCH.
10 IPB-PLANNAME PIC X(8).
10 IPB-DDNAME PIC X(8).
10 IPB-LONREG PIC S9(4) USAGE COMP.
10 IPB-LONBLK PIC S9(4) USAGE COMP.
10 IPB-REGTRK PIC S9(4) USAGE COMP.
10 IPB-DISPOS PIC X(4).
10 IPB-NUMREGS PIC S9(4) USAGE COMP.
10 IPB-TIPREG PIC X(3).
(volver SoporteFsico)
(Ver #LQBBN01)
93
Software Factory Rafael Campillo Lorenzo.
Cceres
Existen unas copys que contienen campos de trabajo estndar para ser utilizados por
el programa de aplicacin. Se encuentran en la librera: SIS.GRUR.COPYLIB.
URCOPYS.
Esta copy contiene las copys RURCOMM y RUROPER que se utilizan para
comunicarse con la rutina UR0000 que gestiona el tratamiento de los ficheros de
salida del proceso, dejando en ellas la informacin
necesaria para el mismo.
En RURCOMM deja informacin acerca del nmero de commit por el que vamos,
nombre del plan, el nmero de registros que se pasa en el JCL por los que hace
COMMIT e informacin sobre los ficheros de salida como el nombre de la ddname, el
blocaje, el tipo de dispositivo, nmero de registros por pista, etc. En RUROPER hay
informacin sobre las llamadas a la rutina UR0000, cuando est en inicio, al final, etc.
*****************************************************************
***
*** COPY RUROPER
***
*****************************************************************
01 RUR-OPER.
05 RUR-CALL PIC X(8) VALUE 'UR0000'.
05 RUR-INIT PIC X(4) VALUE 'INIT'.
05 RUR-NEW PIC X(4) VALUE 'NEW '.
05 RUR-READ.
10 FILLER PIC X(4) VALUE 'READ'.
10 RUR-READ-DD PIC X(8) VALUE SPACES.
05 RUR-SHR PIC X(4) VALUE 'SHR '.
05 RUR-DEL PIC X(4) VALUE 'DEL '.
05 RUR-END PIC X(4) VALUE 'END '.
*****************************************************************
***
*** COPY RURCOMM
***
*****************************************************************
01 RURCOMM.
05 CA-OPER PIC X(4).
05 CA-PARAM.
10 CA-PLANNAME PIC X(8).
10 CA-PROCESO PIC 99.
10 CA-COMMIT PIC (4).
10 CA-NUMREG PIC S9(8) COMP.
10 CA-PREF PIC X(4).
05 CA-PARMOK PIC X.
88 PARMOK VALUE 'S'.
05 CA-MSG PIC X(6).
05 CA-PARM1 PIC X(20).
05 CA-PARM2.
10 CIRC PIC 999.
10 FILLER PIC X.
10 CIEC PIC 9999.
10 FILLER PIC X.
10 CIIC PIC 999.
10 FILLER PIC X(2).
10 CIRCX PIC S9(4) COMP.
10 CIECX PIC S9(4) COMP.
10 CIICX PIC S9(4) COMP.
05 CI-AMSG PIC X(4).
05 CA-OCCUR PIC S9(4) COMP.
05 CA-DDNAMES.
06 CA-ELE-DDNAMES OCCURS 50 TIMES.
10 CIDD PIC X(8).
94
Software Factory Rafael Campillo Lorenzo.
Cceres
10 CILDSN PIC X.
10 CIDSN PIC X(30).
10 CIPRI PIC S9(4) COMP.
10 CISEC PIC S9(4) COMP.
10 CIPOOL PIC X(8).
10 CIBLK PIC S9(4) COMP.
10 CILRECL PIC S9(4) COMP.
10 CIREGTRK PIC S9(4) COMP.
10 CIDISPOS PIC X(4).
URMENSA.
Esta copy contiene campos generales para mensajes de error.
000100***************************************************************
000200***
000300*** COPY DE MENSAJES DE ERROR PARA PROGRAMAS BATCH
000400*** QUE USEN " REPOSICIONAMIENTO "
000500***
000600***************************************************************
000700
000800*
000900*** RUTINA DE CANCELACION UTILIZADA POR PROGRAMAS BATCH
001000*
001100
001200 01 XXCANCEL PIC X(8) VALUE 'XXCANCEL'.
001300
001400
001500*
001600*** CODIGOS DE MENSAJES :
001700*
001800
001900 01 UR-CODICAN PIC 9(4) VALUE 3700.
002000
002100 01 UR-OPEN-ERROR PIC 9(4) VALUE 3701.
002200 01 UR-FETCH-ERROR PIC 9(4) VALUE 3702.
002300 01 UR-CLOSE-ERROR PIC 9(4) VALUE 3703.
002400
002500 01 UR-SELECT-ERROR PIC 9(4) VALUE 3704.
002600 01 UR-UPDATE-ERROR PIC 9(4) VALUE 3705.
002700 01 UR-INSERT-ERROR PIC 9(4) VALUE 3706.
URSWITCH.
Copy que contiene " switches " generales utilizados por los programas de aplicacin
generados por arquitectura, y un switch especfico de relanzamiento para el caso de
los programas que utilizan
reposicionamiento y leen de un fichero secuencial.
000100*********************************************************
000200*
000300* COPY QUE CONTIENE LOS " SWITCHES " UTILIZADOS
000400* POR PROGRAMAS BATCH QUE UTILIZAN REPOSICIONAMIENTO.
000500*
000600*********************************************************
000700*
000800 01 FILLER PIC X.
000900 88 HAY-ERROR-PROCESO VALUE 'S'.
001000 88 NO-HAY-ERROR-PROCESO VALUE 'N'.
001100
001200*
001300 01 FILLER PIC X.
001400 88 FIN-PROCESO VALUE 'S'.
001500 88 NO-FIN-PROCESO VALUE 'N'.
001600
001700*
001800 01 SW-ERROR PIC X.
001900 88 SI-ERROR VALUE 'S'.
002000 88 NO-ERROR VALUE 'N'.
002100
002200*
002300 01 SW-FIN-DATOS PIC X.
95
Software Factory Rafael Campillo Lorenzo.
Cceres
URSQLCOD
Campos para el control del SQLCODE.
000100*****************************************************************
000200***
000300*** COPY PARA EL CONTROL DE SQLCODE UTILIZADO PARA
000400*** PROGRAMAS BATCH QUE UTILICEN REPOSICIONAMIENTO
000500*** Y UTILICEN TABLAS DB2 DE ENTRADA AL PROCESO.
000600*** (EJEMPLO PARA 4 CURSORES DE REPOSICIONAMIENTO).
000700***
000800*****************************************************************
000900*
001000 01 UR-SQL-CUR1 PIC S9(9) COMP.
001100 01 UR-SQL-CUR2 PIC S9(9) COMP.
001200 01 UR-SQL-CUR3 PIC S9(9) COMP.
001300 01 UR-SQL-CUR4 PIC S9(9) COMP.
001400
001500*
001600*** SWITCH QUE INDICA EL CURSOR QUE ESTA ABIERTO EN ESE MOMENTO
001700*
001800 01 SW-UR-CSR PIC X.
001900 88 UR-CSR1 VALUE '1'.
002000 88 UR-CSR2 VALUE '2'.
002100 88 UR-CSR3 VALUE '3'.
002200 88 UR-CSR4 VALUE '4'.
URWORK
Copy que contiene campos de trabajo estndar especficos para programas batch que
utilicen reposicionamiento.
.
000100*****************************************************************
000200***
000300*** COPY QUE CONTIENE LOS CAMPOS DE TRABAJO UTILIZADOS
000400*** EN PROGRAMAS BATCH QUE UTILIZAN REPOSICIONAMIENTO.
000500***
000600*****************************************************************
000700*
000800 01 UR-CONT-REG PIC S9(8) COMP.
000900
001000*
001100 01 UR-CEROS PIC S9(4) COMP VALUE ZEROES.
001200 01 UR-PROCESO PIC S9(2) COMP-3.
001300 01 UR-COMMIT PIC S9(4) COMP.
001400
001500*--- CAMPOS PARA GUARDAR LA ULTIMA CLAVE LEIDA DE LA TABLA.
001600*--- SOLO PARA PROGRAMAS QUE UTILIZAN TABLAS DB2 DE ENTRADA.
001700
001800 01 UR-VALOR-CURSOR.
001900 49 UR-VALOR-CURSOR-LEN PIC S9(4) COMP.
002000 49 UR-VALOR-CURSOR-TEXT PIC X(254).
002100
002200*--- CAMPOS PARA GUARDAR EL ULTIMO REGISTRO LEIDO DEL FICHERO.
002300*--- PARA PROGRAMAS QUE UTILIZAN FICHEROS SECUENCIALES DE ENTRAD
002400
002500 01 UR-VALOR-REGISTRO.
002600 49 UR-VALOR-REGISTRO-LEN PIC S9(4) COMP.
002700 49 UR-VALOR-REGISTRO-TEXT PIC X(254).
96
Software Factory Rafael Campillo Lorenzo.
Cceres
URDCLGEN
URCURSOR
Copy que incluye el cursor for update de DAREPOS.
00100*****************************************************************
000200***
000300*** COPY QUE INCLUYE EL CURSOR FOR UPDATE DE DAREPOS
000400*** (TABLA EN LA QUE SE GUARDAN LOS PUNTEROS UTILIZADOS
000500*** PARA REALIZAR REPOSICIONAMIENTO EN PROGRAMAS BATCH).
000501***
000510*** PARA PROGRAMAS QUE LLAMAN A LA RUTINA "UR0000".
000600***
000700*****************************************************************
000800
000900 EXEC SQL
001000 DECLARE REP CURSOR FOR
001100 SELECT RUR_PLANNAME,
001200 RUR_PROCES,
001300 RUR_ESTADO,
001400 RUR_NUMCOMM,
001500 RUR_PUNTEROS
001600 FROM DAREPOS
001700 WHERE RUR_PLANNAME = :CA-PLANNAME
001800 AND RUR_PROCES = :UR-PROCESO
001900 FOR UPDATE OF RUR_ESTADO, RUR_NUMCOMM, RUR_PUNTEROS
002000 END-EXEC.
(volver SoporteFsico)
(Ver #LQBBN01)
97
Software Factory Rafael Campillo Lorenzo.
Cceres
(volver SoporteFsico)
(Ver #LQBBN01)
98
Software Factory Rafael Campillo Lorenzo.
Cceres
JCLREPOS: JCL de ejecucin del programa con Clist para borrado del ltimo fichero
de COMMIT en caso de relanzar el programa.
99
Software Factory Rafael Campillo Lorenzo.
Cceres
//ISPLLIB DD DSN=SIS.GRAR.PGM,DISP=SHR
//SYSUADS DD DSN=SYS1.UADS,DISP=SHR
//ISPLOG DD SYSOUT=*
//SYSPROC DD DSN=ISR.V3R2M0.ISRCLIB,DISP=SHR
// DD DSN=SIS.ISPF.CLIST,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//RURMSG DD SYSOUT=*
//SYSTSIN DD *
PROFILE NOPREFIX
ISPSTART CMD(%URCLEARU PL( D) NR( ) NP(1) PX(DES ) DB2(DBD1))
/*
(Ver #EJEMPLOJCL)
100
Software Factory Rafael Campillo Lorenzo.
Cceres
Podemos enfrentar dos ficheros para fusionarlos en un tercero ordenado, para obtener
datos y tratarlos etc.
Lo nico que hemos de tener en cuenta es que cuando se llegue al final de uno de los
ficheros, se ponga la clave a HIGH-VALUES, ya que en ese caso podremos seguir
leyendo del otro fichero y comparar las claves de ambos ficheros. La clave del fichero
que an no se ha terminado de leer siempre ser menor que la del otro que est a
HIGH-VALUES. ()
PERFORM 2000-PROCESO-ENFRENTAMIENTO
THRU 2000-PROCESO-ENFRENTAMIENTO-EXIT
UNTIL (CLAVE1 <> HIGH-VALUES OR CLAVE2 <> HIGH-VALUES)
2000-PROCESO-ENFRENTAMIENTO.
PERFORM 9100-LEER-FICHERO1
THRU 9100-LEER-FICHERO1-EXIT
ELSE
IF CLAVE1 GREATER THAN CLAVE2
<Mover los campos del Fichero2 al Fichero3>
<Escribir en el Fichero3>
PERFORM 9200-LEER-FICHERO2
THRU 9200-LEER-FICHERO2-EXIT
ELSE
<Mover los campos del Fichero1 del Fichero2 al Fichero3>
<Escribir en el Fichero3>
PERFORM 9100-LEER-FICHERO1
THRU 9100-LEER-FICHERO1-EXIT
PERFORM 9200-LEER-FICHERO2
THRU 9200-LEER-FICHERO2-EXIT
END-IF
END-IF
.
2000-PROCESO-ENFRENTAMIENTO-EXIT.
EXIT.
101
Software Factory Rafael Campillo Lorenzo.
Cceres
PERFORM 9300-ERROR-FICHERO
THRU 9300-ERROR-FICHERO-EXIT
END-IF
.
9100-LEER-FICHERO1
EXIT.
(Ver #S410UNIDADCOMM
102
Software Factory Rafael Campillo Lorenzo.
Cceres
ANEXO-SORT
ORDENACIN BSICA
103
Software Factory Rafael Campillo Lorenzo.
Cceres
ORDENACIN PARCIAL
104
Software Factory Rafael Campillo Lorenzo.
Cceres
COPIA DE UN FICHERO
105
Software Factory Rafael Campillo Lorenzo.
Cceres
106
Software Factory Rafael Campillo Lorenzo.
Cceres
107
Software Factory Rafael Campillo Lorenzo.
Cceres
ELIMINAR REPETIDOS
108
Software Factory Rafael Campillo Lorenzo.
Cceres
ACUMULAR
109
Software Factory Rafael Campillo Lorenzo.
Cceres
110
ANEXO 6. just enough ispf
Creating a PDS/Library
Option 3, Utility, from the main menu
Menu Utilities Compilers Options Status Help
------------------------------------------------------------------------------
ISPF Primary Option Menu
Option ===> 3
0 Settings Terminal and user parameters User ID . : userid
1 View Display source data or listings Time. . . : 06:49
2 Edit Create or change source data Terminal. : 3278
3 Utilities Perform utility functions Screen. . : 1
4 Foreground Interactive language processing Language. : ENGLISH
5 Batch Submit job for language processing Appl ID . : ISR
6 Command Enter TSO or Workstation commands TSO logon : TRAINING
7 Dialog Test Perform dialog testing TSO prefix: userid
8 LM Facility Library administrator functions System ID : SYS1
Enter X to Terminate using log/list defaults
Press ENTER
Menu RefList Utilities Help
Allocate New Data Set ----------------------------.
Command ===>
Data Set Name . . . . : userid.CLASS.CNTL
Management class. . . . (Blank for default management class)
Storage class . . . . . (Blank for default storage class)
Volume serial . . . . (Blank for authorized default volume)
Data class . . . . . . (Blank for default data class)
Space units . . . . . TRACK (BLKS, TRKS, CYLS, KB, MB or BYTES)
Primary quantity. . . 10 (In above units)
Secondary quantity. . 5 (In above units)
Directory blocks. . . 10 (Zero for sequential data set) *
Record format . . . . FB
Record length . . . . 80
Block size . . . . . 0
Data Set Name type. . PDS (LIBRARY, HFS, PDS, or blank) *
Expiration date . . . (YY/MM/DD, YYYY/MM/DD
Enter "/" to select option DDDD for retention period in days
Type in attributes like the ones shown in bold. If your installation has other standards, use them.
Then go to the Editor type =2, then ENTER
112
Software Factory Rafael Campillo Lorenzo.
Cceres
Type in the name of your new library, as well as a member name as shown. Then press ENTER
You have to do it this way on this screen, if its the first time youre
editing this PDS/Library.
113
Software Factory Rafael Campillo Lorenzo.
Cceres
114
Software Factory Rafael Campillo Lorenzo.
Cceres
Now insert some lines of jcl or data. I8 will open up 8 blank lines for you to type in.
File Edit Confirm Menu Utilities Compilers Test Help
-------------------------------------------------------------------------------
EDIT userid.CLASS.CNTL(NEWMEMB) - 01.00 Columns 00001 00072
Command ===> Scroll ===> CSR
I8 ***************************** Top of Data ******************************
****** **************************** Bottom of Data ****************************
115
Software Factory Rafael Campillo Lorenzo.
Cceres
116
Software Factory Rafael Campillo Lorenzo.
Cceres
? next to the job name breaks the job down into separate print files
Display Filter View Print Options Help
-------------------------------------------------------------------------------
SDSF JOB DATA SET DISPLAY - JOB useridW (JOB00669) LINE 1-6 (6)
COMMAND INPUT ===> SCROLL ===> PAGE
NP DDNAME STEPNAME PROCSTEP DSID OWNER C DEST REC-CNT PAGE
JESMSGLG JES2 2 userid H LOCAL 17
JESJCL JES2 3 userid H LOCAL 51
JESYSMSG JES2 4 userid H LOCAL 110
SYSPRINT STEP1 COB2 103 userid H LOCAL 97
SYSPRINT STEP1 LKED 104 userid H LOCAL 387
SYSOUT STEP1 GO 109 userid H LOCAL 2
117
Software Factory Rafael Campillo Lorenzo.
Cceres
118
Software Factory Rafael Campillo Lorenzo.
Cceres
119
Software Factory Rafael Campillo Lorenzo.
Cceres
120
Software Factory Rafael Campillo Lorenzo.
Cceres
121
Software Factory Rafael Campillo Lorenzo.
Cceres
122
Software Factory Rafael Campillo Lorenzo.
Cceres
Delete a line
File Edit Confirm Menu Utilities Compilers Test Help
-------------------------------------------------------------------------------
EDIT userid.CLASS.CNTL(NEWMEMB) - 01.01 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
MM THIS IS LINE 2
MM THIS IS LINE 3
000003 HELLO THIS IS A TEST
A THIS IS LINE 2
****** **************************** Bottom of Data ****************************
123
Software Factory Rafael Campillo Lorenzo.
Cceres
124
Software Factory Rafael Campillo Lorenzo.
Cceres
ISPF Settings
Command ===>
Options Print Graphics
Enter "/" to select option Family printer type 2
Command line at bottom Device name . . . .
Panel display CUA mode Aspect ratio . . . 0
Long message in pop-up
Tab to action bar choices
Tab to point-and-shoot fields General
Restore TEST/TRACE options Input field pad . .
Session Manager mode Command delimiter . ;
Jump from leader dots
Edit PRINTDS Command
Always show split line
Terminal Characteristics
Screen format 1 1. Data 2. Std 3. Max 4. Part
125
Software Factory Rafael Campillo Lorenzo.
Cceres
I suggest option 2 - to delete the log. Also put zeros on the pages to be printed
Now to take care of the List
Log/List Function keys Colors Environ Workstation Identifier Help
------------------------------------------------------------------------------
ISPF Settings
Command ===>
126
Software Factory Rafael Campillo Lorenzo.
Cceres
127
Software Factory Rafael Campillo Lorenzo.
Cceres
128
Software Factory Rafael Campillo Lorenzo.
Cceres
129
Software Factory Rafael Campillo Lorenzo.
Cceres
Workstation File:
File Name . . . . .
130
Software Factory Rafael Campillo Lorenzo.
Cceres
Another suggestion: Get rid of the key captions from the bottom of your screen.
since scrolling is unaware of the key captions (which means they hide important information!)
Type PFSHOW OFF on any command line.
Creating a PDS/Library 2
Getting into the Editor 5
SDSF 8
The list of files, and a few Editing features 11
Taming TSO Version 4 15
Keys and keylists 21
Removing Key Captions 22
(Ver #ndice)
131
ANEXO 7- DESCRIPCION FILE STATUS EN ESPAOL
Cdigo Significado
00 No hay informacin adicional
02 La sentencia READ fue ejecutada satisfactoriamente, pero fue detectada una clave
duplicada.
04 La sentencia READ fue ejecutada satisfactoriamente, pero el largo de registro procesado
no corresponde
05 Una sentencia OPEN es ejecutada satisfactoriamente, pero el archivo referenciado no es
est presente al momento de ejecutar el OPEN. Si el modo de apertura es I-O o EXTEND, el
archivo se crear
10 Una sentencia secuencial READ fue intentada y no existe otro registro lgico en el archivo
porque ha sido encontrado el fin de archivo.
12 Extensin IBM. No se encontr un registro de Subfile modificado
14 Una sentencia READ secuencial fue intentada para un archivo relativo y el nmero de
dgitos significativos en el nmero relativo de registro fue ms largo que el tamao del tem
de datos de la clave relativa descrita para el archivo
21 Existe un error de secuencia para un archivo indexado accesado secuencialmente. El valor
de la clave de registro ha sido cambiada por el programa entre la ejecucin satisfactoria de
una sentencia READ y la ejecucin de la siguiente sentencia REWRITE para el archivo, o los
requerimientos de orden ascendente para los valores claves de registro fueron violados.
22 Se intent escribir un registro que crear una clave duplicada en un archivo relativo; o se
intent escribir o sebreescribir (WRITE/REWRITE) un registro que crear una clave de
registro principal duplicada en un archivo indexado. CPF4759, CPF5008, CPF5026, CPF5034,
CPF5084, CPF5085
23 Se intent hacer un acceso directo (Random) a un registro que no existe en el archivo.
CPF5001, CPF5006, CPF5013, CPF5020, CPF5025
24 Se intent realizar una escritura ms all de los lmites definidos externamente para un
archivo relativo o indexado. Una sentencia secuencial WRITE fue intentada para un archivo
relativo y el nmero de dgitos significativos en el nmero relativo de registro era ms largo
que el tamao de la clave de registro relativo descrito para el archivo.
CPF5006, CPF5018, CPF5021, CPF5043, CPF5272
34 Existe un error permanente porque existe una violacin, se intent escribir ms all de los
lmite definidos externamente para un archivo secuencial.
CPF5116, CPF5018, CPF5272, s la organizacin es secuencial.
35 Se intent una sentencia OPEN con la frase INPUT, I-O o EXTEND sobre un archivo no
opcional que no est presente.
CPF4101, CPF4102, CPF4103
37 Se intento una sentencia OPEN sobre un archivo que no soporta el modo de apertura
especificado en la sentencia OPEN. Posibles Violaciones son:
La frase EXTEND o OUTPUT fue especificada pero el archivo no soporta operaciones de
escritura.
La frase I-O fue especificada pero el archivo no soporta las operaciones de entrada y salida
permitidas.
La frase INPUT fue especificada pero el archivo no soporta las operaciones de lectura.
38 Se intent una sentencia OPEN sobre un archivo cerrado previamente con bloqueo (lock).
39 La sentencia OPEN no fue ejecutada satisfactoriamente debido a un conflicto entre los
atributos del archivo fsico y los atributos especificados para se archivo en el programa.
Comprobar error de nivel para el archivo.
CPF4131
Software Factory Rafael Campillo Lorenzo.
Cceres
47 La ejecucin de una sentencia READ o START fuen intentada sobre un archivo que no est
abierto en el modo INPUT o I-O.
48 La ejecucin de una sentencia WRITE fue intentada sobre un archivo que no est abierto
en el modo I-O, OUTPUT o EXTEND.
49 La ejecucin de una sentencia DELETE o REWRITE fue intentada sobre un archivo que no
est abiertoen el modo I-O.
90 Otros errores:
Archivo no encontrado.
Miembro no encontrado.
Falta exepciones I-O.
CPF4101, CPF4102, CPF4103 si un USE es aplicable para el archivo (sobre un no opcional
con OPEN OUTPUT).
Las siguientes excepciones se monitora genricamente :
CPF4101 al CPF4399
CPF4501 al CPF4699
CPF4701 al CPF4899
CPF4901 al CPF4999
CPF5001 al CPF5099
CPF5101 al CPF5399
CPF5501 al CPF5699
92 Error lgico:
Archivo bloqueado
El archivo ya est abierto
I-O para un archivo cerrado
READ despus de fin de archivo
CLOSE para un archivo ya cerrado
CPF4106, CPF4132, CPF4740, CPF5013, CPF5067, CPF5070, CPF5119, CPF5145, CPF5146,
CPF5149, CPF5176, CPF5209
133
Software Factory Rafael Campillo Lorenzo.
Cceres
98 Grave errr 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,
se recomienda hacerle un RECOBERY (RM/COBOL) o el que corresponda a cada compilador
para rehacer las claves.
En algunos casos , es posible que ste error se deba a un problema fsico del disco, en ese
caso tambin ser conveniente copiarlo en otro sitio "fsico"
99 Al borrar, leer o reescribir un registro que est siendo bloqueado por otro usuario.
9 A El trabajo a sido cancelado de una manera controlada por comandos CL, CNLJOB,
TRMSBS, TRMCPF, PWRDWNSYS.
CPF4741
9 P Open fall porque el archivo no puede ser ubicado bajo control ???
CPF4293, CPF4326, CPF4327, CPF4328, CPF4329
134
Software Factory Rafael Campillo Lorenzo.
Cceres
1. HOST
135
Software Factory Rafael Campillo Lorenzo.
Cceres
Nos aparece la primera ventana del HOST informativa de que hemos accedido.
Pulsamos Control y nos aparece la segunda ventana informativa de que tenemos acceso
al CISC.
136
Software Factory Rafael Campillo Lorenzo.
Cceres
137
Software Factory Rafael Campillo Lorenzo.
Cceres
Las teclas de funcin que ms se utilizan en los mens del HOST son las siguientes:
F10
Ver el contenido de la izquierda de la ventana.
F11
Ver el contenido de la derecha de la ventana.
138
Software Factory Rafael Campillo Lorenzo.
Cceres
Para salir de TSOD, pulsamos F3 hasta llegar al men general de desarrollo y pulsamos
como opcin la X y CONTROL. Debemos cerrar todas las ventanas de sesin que
hayamos abierto.
(((En caso de que en alguna de ellas nos lleve hasta otro men (ver imagen siguiente), al
pulsar la X, indicaremos en esa ventana la opcin 2 y pulsaremos CONTROL))).
139
Software Factory Rafael Campillo Lorenzo.
Cceres
A travs del men de edicin podemos crear o editar un archivo para programar el
cdigo COBOL en l. Accedemos a travs de la opcin 2 desde el men general de
desarrollo.
En Proyect: DES.ISWF
En Group: TRABAJO
En Type: INS.FTE
En Member: Nombre_del_archivo
Pulsamos CONTROL.
140
Software Factory Rafael Campillo Lorenzo.
Cceres
DES.ISWF.TRABAJO.INS.FTE(NOMBRE_DEL_ARCHIVO)
141
Software Factory Rafael Campillo Lorenzo.
Cceres
Lnea de
Numeracin de
Teclas de
Vamos a ver como podemos utilizarlo. Existen tres formas de dar instrucciones al
editor:
Las opciones de escritura del texto vamos a indicarlas a travs de la insercin de una
serie de caracteres y nmeros en la posicin que queramos del editor dentro de la
numeracin de lneas. As, si en esa columna, en una fila determinada ponemos por
ejemplo una I, se insertar una lnea debajo de esa fila donde podremos continuar
escribiendo. Las opciones ms habituales son:
142
Software Factory Rafael Campillo Lorenzo.
Cceres
Para bloques de texto se coloca dos caracteres indicativos de lo que queremos hacer en
la primera lnea del bloque y esos mismos caracteres en la ltima lnea del bloque de
texto.
Por ejemplo:
Borrar en bloque: Ponemos DD en la primera lnea y DD en la ltima lnea del
bloque y al pulsar CONTROL se eliminar todo el contenido que haya entre ambas
lneas.
Copiar en bloque: Ponemos CC en la primera lnea del bloque y CC en la ltima.
Escribimos una A (after) o una B (befote) en la posicin donde queremos copiar el
bloque de texto dependiendo si queremos que se copie a continuacin de esa lnea o
antes de la misma y pulsamos CONTROL.
Mover en bloque: Se hace igual que copiar en bloque, pero en lugar de poner CC
pondremos MM en la primera y la ltima lnea del bloque.
Desplazar a la izquierda o derecha un bloque de texto: Se pone ))n en la primera
lnea del bloque y ))n en la ltima lnea del bloque y al pulsar CONTROL desplaza
todo el texto del bloque n espacios a la izquierda. ( Si en lugar de poner ))n, se pone
((n, desplazar a la derecha).
En la parte inferior de la pantalla del editor aparece la posicin del cursor (el nmero de
fila y el nmero de columna en la que se encuentra), pero esta posicin no es la posicin
COBOL, por lo que debemos conocer la posicin COBOL para no tener errores de
sintaxis a la hora de realizar la compilacin.
Por ejemplo:
Los 01 van en la posicin COBOL 8.
Los 05 en la posicin cobol 12, igual que los niveles 88.
Los 10 van en la posicin cobol 16.
Los 03 van en la posicin cobol de los 05 desplazando todo a la posicin del
siguiente (el 05 pasara a la posicin del 10, ...)
Los comentarios (*) comienzan en la posicin cobol 7.
Los exec comienzan en la posicion COBOL 12.
Para poder visualizar la posicin COBOL, el editor nos muestra la regla para COBOL si
ponemos COLS en la numeracin de una lnea.
143
Software Factory Rafael Campillo Lorenzo.
Cceres
La lnea de mandatos.
En la lnea de mandatos vamos a indicar las operaciones que queremos realizar con este
fichero o entre varios ficheros. Las que ms utilizamos son:
DOS EJEMPLOS:
1. Copiar de un fichero a otro existente.
a) Abrimos dos ventanas del editor, una con el documento desde el que queremos
copiar y otra con el documento destino.
b) Ponemos CC en la primera lnea que queremos copiar y CC en la ltima lnea
del bloque a copiar.
c) En la lnea de comandos ponemos CUT.
d) Nos vamos al documento destino y en la lnea anterior a la posicin donde
queremos poner el bloque de texto escribimos una A.
e) Ponemos en la lnea de comando PASTE.
144
Software Factory Rafael Campillo Lorenzo.
Cceres
F3
Salir del editor. Guarda el documento cuando sale.
F5
Si se ha indicado en la lnea de comando F texto_a_buscar, permite seguir
buscando el texto a travs del documento.
F7
Muestra la pantalla siguiente de contenido del documento.
F8
Muestra la pantalla anterior de contenido del documento.
F9
Abre el men que permite pasar de una abierta a otra o abrir una nueva ventana.
F10
Muestra el texto de la parte derecha de la pantalla.
F11
Muestra el texto de la parte izquierda de la pantalla si lo hay.
NOTA: Siempre que pongamos una orden en una lnea o un comando debemos pulsar
control para que se ejecute o borrarla si queremos cancelarla.
145
Software Factory Rafael Campillo Lorenzo.
Cceres
146
Software Factory Rafael Campillo Lorenzo.
Cceres
Para ello indicamos la librera principal y a travs de ella podremos ir entrando en las
que contiene. Por ejemplo, si queremos entrar a ver los documentos que contiene la
librera DES.ISWF.TRABAJO.SWF.FTE, podemos poner lo siguiente:
En Cualificador 1: DES
En Cualificador 2: ISWF
En Resto: TRABAJO.INS.FTE
147
Software Factory Rafael Campillo Lorenzo.
Cceres
148
Software Factory Rafael Campillo Lorenzo.
Cceres
En el caso de que queramos editar alguno de ellos, pondremos una E delante de la lnea
donde aparece el nombre del documento y pulsaremos CONTROL. Si queremos
solamente visualizarlo sin permiso para realizar modificaciones, entonces en lugar de
una E pondremos una V. En ambos casos, se abrir la ventana del editor mostrndonos
el contenido del documento.
Copiar un archivo.
149
Software Factory Rafael Campillo Lorenzo.
Cceres
En Proyect: DES.ISWF
En Group: TRABAJO
En Type: SWF.FTE
Si el fichero ya existe en esa librera nos dar un error, por lo que si queremos copiarlo
y ya existe en Replace Option debemos poner una / indicando que remplace el
miembro con el mismo nombre. Si no existe no es necesaria la /.
Una vez indicada la librera de forma correcta, pulsamos CONTROL y de esta forma se
ha copiado el archivo. Salimos con F3 al men inicial de desarrollo y desde ah
podemos comprobar entrando de nuevo a travs del men de seleccin de utilidades si
existe el nuevo archivo en la librera donde lo hemos copiado.
150
Software Factory Rafael Campillo Lorenzo.
Cceres
Renombrar un archivo.
Eliminar un archivo.
Si lo que queremos es eliminar definitivamente un archivo (Cuidado con esto!)
entonces lo que haremos ser poner una D delante y pulsar CONTROL. Nos aparece
una ventana en la que se nos indica el archivo que vamos a eliminar y si pulsamos
CONTROL se eliminar el archivo. Con F3 cancelamos la eliminacin.
151
Software Factory Rafael Campillo Lorenzo.
Cceres
152
Software Factory Rafael Campillo Lorenzo.
Cceres
A travs de ella podemos buscar cadenas de caracteres dentro de los ficheros existentes
en una librera. Para ello, en la lnea de SEARCH STRING pondremos la cadena de
caracteres a buscar entre comillas simples. En ISPF LIBRARI indicaremos la librera
donde queremos buscar. Podemos indicar una librera que contenga a otras para
encontrar as ms archivos.
Por ejemplo, vamos a buscar la cadena BPBF en la librera
DES.ISWF.TRABAJO.SWF.FTE.
Si hay algo escrito en la lnea de Data Set Name, lo borramos y Pulsamos CONTROL.
153
Software Factory Rafael Campillo Lorenzo.
Cceres
Esperamos un poco de tiempo. Aparecer un listado con el/los nombre/s de los fichero/s
donde aparece la cadena y mostrar el prrafo en el que ha encontrado esa cadena
dentro del documento.
TSO LIBRARI
y pulsamos CONTROL.
154
Software Factory Rafael Campillo Lorenzo.
Cceres
155
Software Factory Rafael Campillo Lorenzo.
Cceres
156
Software Factory Rafael Campillo Lorenzo.
Cceres
157
Software Factory Rafael Campillo Lorenzo.
Cceres
Para poder visualizar la cola del spool referente a nuestra compilacin o bind, si no la
vemos an, debemos indicar lo siguiente en la lnea de comandos:
owner * (CONTROL)
pre nombre_usuario*
Si el usuario que hemos utilizado para compilar o hacer bind es distinto al usuario que
hemos utilizado para abrir la sesin de TSOD, entonces debemos de poner en
nombre_usuario* el usuario de compilacin o de bind.
Normalmente, las compilaciones tienen como nombre en la cola el del usuario con una
C al final y los bind tiene como nombre el del usuario con una A al final.
Con M(F8) vamos a ir al final de la cola, ya que si acabamos de compilar normalmente
nuestra compilacin estar al final de la cola. Si otra persona ha compilado con el
mismo usuario, su compilacin tambin estar en esta cola, por lo que debemos
comprobar que la los archivos de compilacin que estamos viendo sean los nuestra.
Adems, si hemos realizado ms de una compilacin debemos ver tambin la hora de la
compilacin para comprobar que sea la ltima realizada.
Para hacer todas estas cosas, en la lnea de la compilacin que creemos es la nuestra
debemos:
-> Fijarnos en el nmero que aparece detrs del nombre de la compilacin. Si aparece
un valor 12 o un valor 8 detrs del nombre de la compilacin indica error. Si aparece un
4 o un 24 indica errores warning y si aparece un 0 es que no hay ningn error. Estos son
los valores ms usuales que aparecen, pero hay ms. Para ver si es nuestra compilacin
y la hora:
Delante del nombre de la compilacin que queremos ver ponemos:
o SJ para que nos muestre el documento con el nombre del programa al
principio.
o Salimos con F3 y en esa misma lnea ponemos S para que nos muestre la
hora de compilacin.
Si es nuestra compilacin y queremos ver los posibles errores que tengamos escribimos
una ? delante de la lnea donde aparece el nombre de la compilacin y pulsamos
CONTROL.
Ahora nos muestra los archivos de nuestra compilacin. En el ltimo documento de la
lista que tenga terminacin -out pondremos una S para que lo abra, escribiremos en la
lnea de comandos M y pulsaremos F8 para que vaya al final del documento. Veremos
en el final del documento los errores de compilacin que existan. Para modificar el
cdigo del programa y solucionar los errores encontrados en la compilacin abriremos
con F9 otra nueva ventana en la que tendremos el programa editado y cuando hayamos
quitado todos los errores posibles, volveremos a compilar saliendo antes del editor. Si
en el documento de errores de compilacin, delante de la descripcin del error nos
aparece una:
S Indica que el error es severe.
E Indica error.
Estos dos tipos primeros hay que solucionarlos completamente porque sino no funciona
el programa.
W Indica que es un warning.
I Indica que es un informativo.
158
Software Factory Rafael Campillo Lorenzo.
Cceres
Para poder almacenar informacin en los ficheros de entrada que hemos creado, vamos
a editar primero el fichero de entrada que acabamos de crear (y por tanto estar vaco) y
aadirle una lnea en blanco. Lo salvamos y salimos del editor.
En la librera de trabajo propia (DES.DESRLB.FTE) creamos o guardamos las COPYS
de cada uno de los fichero de entrada que tenemos, ya que para poder utilizar el
programa de insercin de datos en ficheros, DX, necesitamos las COPYS de todos los
ficheros a los que vamos a aadir registro.
159
Software Factory Rafael Campillo Lorenzo.
Cceres
Pulsamos CONTROL y nos aparece la ventana de introduccin del registro con todos
los campos de la COPY a la izquierda, el tipo de datos (C-alfanumrico, PS-comp3 y P-
numrico???) y a la derecha la zona donde podemos introducir los valores para cada
campo. Introducimos los valores en los campos necesarios y escribimos en la lnea de
comando SAVE para que nos lo guarde. Para ver el resto de campos que pueda haber en
la siguiente pantalla, debemos poner en SCROLL la instruccin CSR y CONTROL y
luego pulsar F8.
1.12 EL DEBUG.
Dependiendo del programa que tengamos que ejecutar vamos a utilizar 3 tipos de
debug. El Debug de programas Batch, el Debug de programas Batch con DB2 y el
Debug de programas On-line.
160
Software Factory Rafael Campillo Lorenzo.
Cceres
161
Software Factory Rafael Campillo Lorenzo.
Cceres
162
Software Factory Rafael Campillo Lorenzo.
Cceres
-> En db2 System Name ponemos el nombre de la base de datos con la que trabaja el
programa (la que usamos nosotros es DBD1).
-> En Plan Name escribimos el nombre del plan de nuestro programa que ser el
nombre del programa con una D al final.
-> En Library Name ponemos la librera de desarrollo con base de datos que es:
DES.GRDE.DBRM
Pulsamos CONTROL.
Aparece una ventana con el men de IBD. Si utilizamos ficheros, antes de entrar en el
debugger tenemos que hacer un allocate de los ficheros a travs del
JCL de ficheros, por lo que entraramos en la opcin 3 y seguiriamos los mismos pasos
que explicamos para IB.
Si no tenemos ficheros, o ya hemos hecho el allocate, seleccionaremos la opcion 1
(COBOL Test) y pulsaremos CONTROL.
Aparece una nueva ventana en la que tenemos que rellenar los siguientes campos:
-> En PGM escribiremos el nombre de nuestro programa.
-> En Task Libraries escribiremos todas las librerias que necesitemos para ejecutar el
programa. Estas libreras van a depender del tipo de programa que
usemos. Si no llama a rutinas tendr una librera llamada DES.GRXX.PGM con XX
las dos primeras iniciales de nuestro programa. Si usamos rutinas
tambien tendr que existir una librera con las dos primeras iniciales de cada rutina.
Pulsamos CONTROL.
Nos aparece una nueva ventana, el panel de control de monitor batch. En esta ventana,
en la zona de programas monitorizados pondremos el nombre de nuestro programa y de
todas las rutinas a las que llama el programa. Pulsamos CONTROL y aparece la
ventana del debugger. El manejo del debugger de IBD es igual al de IB explicado en el
apartado anterior.
163
Software Factory Rafael Campillo Lorenzo.
Cceres
Una vez escrito el programa en el editor del host, para poder compilarlo en la
arquitectura ISBAN, debemos antes darle de alta y crear su plan.
Despus de asegurarnos que todos los campos han sido rellenados correctamente,
pulsamos F6 para dar de alta.
164
Software Factory Rafael Campillo Lorenzo.
Cceres
En la pantalla que aparece terminamos de rellenar los datos necesarios para dar de alta
al programa:
Para confirmar el alta del programa, pulsamos la tecla de funcin F5. Si no ha habido
ningn problema, en la parte inferior de la pantalla nos indicar que el alta se ha
realizado correctamente.
Los programas que utilizan DB2 necesitan un plan. En otras arquitecturas el plan
es nico para todos los programas, pero en ISBAN no, por lo que
vamos a crear un plan para cada uno de los programas que demos de alta en la
arquitectura y que usen DB2.
Para dar de alta al plan del programa accedemos a la opcin planes poniendo como
opcin la nmero 7 y pulsando CONTROL.
En la ventana que aparece rellenamos los siguientes datos:
* ENTORNO: Pondremos como entorno DE (desarrollo).
* PLAN: Pondremos el nombre del plan, que es el nombre del programa con una D al
final.
* SUBAPLICACION: La misma subaplicacin que hayamos puesto al dar de alta al
programa.
* IND. VIGENCIA: Pondremos una V.
* COD. TECNICO: Las dos primeras letras del nombre del plan.
* PROGRAMA: El nombre del programa al que estamos creando el plan.
165
Software Factory Rafael Campillo Lorenzo.
Cceres
Cuando hemos comprobado que todos los datos son correctos, pulsamos la tecla F6.
Mostrar una nueva ventana para continuar dando de alta al plan. En esta ventana
aparecen todos los datos rellenos (Entorno, Codigo Tcnico, Plan y Subaplicacion) por
lo que pulsamos control y continuamos dando de alta al plan. Rellenamos los siguientes
campos:
* FUNCIONALIDAD: Si no esta puesta, la funcionalidad es AP.
* DESCRIPCION: Un texto largo indicando a que programa se le ha creado este plan.
* PROGRAMA PRINCIPAL: El nombre del programa al que se le est realizando el
Plan.
Una vez escritos estos datos, pulsamos CONTROL para confirmar. Pulsamos F3 para
volver a la pantalla anterior y hemos terminado de dar de alta al plan.
En el caso de que adems dentro del programa principal se llame a alguna rutina, desde
la pantalla inicial de creacion del plan pondremos el nombre del plan en el campo Plan
y pulsamos CONTROL. Aparece en el centro de la pantalla una lnea con el nombre del
plan y sus caractersticas. Delante de esa lnea escribimos una P (Programas Plan) y
pulsamos CONTROL. Nos muestra una pantalla con todos los programas que tenemos
asignados a este plan indicando si son programa principal o no. Para aadir una nueva
rutina al plan debemos de pulsar la tecla F6. Se abre la ventana de aadir programas al
Plan. En el campo Ind.Pgm.Principal indicamos que no es un programa principal (ya
que es una rutina que llamamos desde dentro del principal) con una N. En el campo
Programa escribimos el nombre de la rutina y para confirmar pulsamos CONTROL. Si
queremos aadir ms rutinas seguimos introduciendo sus nombres y pulsando
CONTROL, comprobando siempre que en Ind.Pgm.Principal siga estando una N.
Cuando terminamos de introducir todas las rutinas, volvemos a la pantalla inicial del
plan y volvemos a poner una P a la izquierda en la linea del nombre del plan y pulsamos
CONTROL para comprobar que en el listado de la pantalla que se nos muestra aparece
el programa principal y todas las rutinas que utiliza. Debemos de tener cuidado al
introducir todo esto ya que luego no se nos permite realizar modificaciones.
166
Software Factory Rafael Campillo Lorenzo.
Cceres
Se abre una nueva ventana en la que tenemos que rellenar los siguientes Campos:
Se abre una nueva ventana emergente informativa de las librerias y base de datos que
utilizar para la compilacion. Pulsamos F5 y esperamos a que desaparezca esa ventana y
vuelva a la pantalla inicial de compilacion.
Una vez haya vuelto a esa pantalla, debemos ir al ISPF, a la cola del spool para ver
nuestra compilacion como se explica en el apartado .... ((PONER APARTADO)).
167
Software Factory Rafael Campillo Lorenzo.
Cceres
Una vez escrita la sentencia, pulsamos la tecla F2 para que la ejecute y nos
muestre la informacin que contiene la tabla.
CICS ((TRANSACCIONES)).
Cuando el programa que estamos realizando es una Rutina, debemos hacer un programa
de pruebas para l. Para ello, en la librera de pruebas que tengamos (en nuestro caso
DES.DESRLB.FTE) editamos un programa que ya exista (ver ejemplo de programa que
viene debajo) y lo modificamos para llamar a nuestra rutina. Debemos tomar un
168
Software Factory Rafael Campillo Lorenzo.
Cceres
programa de pruebas que ya exista y este dado de alta en la arquitectura y est tambien
dado de alta su plan, dando de alta a la nueva rutina dentro del plan del programa de
pruebas. Si el programa es nuevo, entonces tendremos que darle de alta en la
arquitectura, dar de alta su plan, aadir la rutina al plan y si usa DB2 hacer un bind del
programa y el plan.
Cuando tengamos modificado el programa (o creado y dado de alta si lo hacemos
nuevo), lo compilamos a travs de la arquitectura y comprobamos despus a travs del
debugger IBD si funciona. Como el programa llama a la rutina, probamos por tanto si
funciona nuestra rutina.
169