Ir al Portal Ir al Foro
 

Cobol 3.4 - Coprocesador DB2 -501 ejecución

Todo lo relacionado con Cobol en ambientes batch, online(CICS,IMS) con bases de datos(DB2, Adabas) etc.

Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor USCDA01 » 03 Mar 2010, 12:45

Buenas tardes.
En nuestra instalación estamos montando Cobol 3.4 con DB2 8.1 y nos estamos encontrando unos problemas en ejecución, no en compilación, con retornos de SQLCODE -501 para cualquier operación con cursores declarados en Data Division.
En la actualidad, utilizamos Cobol 3.2 con DB2 8.1, compilamos con el Coprocesador de DB2 y generamos DBRMs en EBCDIC (por defecto se usa el NEWFUN=NO) con las opciones CBL SQL("HOST(COB2),APOST,APOSTSQL,SOURCE,XREF,DATE(ISO)") nos muestra el mensaje en compilación "The DB2 SQL Coprocessor is using the level 1 interface under DB2 V8" y no tenemos ningún problema de ejecución.
Hemos probado con Cobol 3.4 y DB2 8.1 con las opciones actualizadas pero sin generar DBRMs en Unicode, esto es, CBL SQL("NEWFUN=NO,HOST(IBMCOB),APOSTSQL,SOURCE,XREF,DATE(ISO)") y no tenemos problemas de ejecución.
Cuando probamos con Cobol 3.4 pero con la opción de NEWFUN=YES no hay problemas de compilación y nos dice ya "The DB2 SQL Coprocessor is using the level 2 interface under DB2 V8" pero observamos 2 comportamientos distintos con los programas:
1. Si no tienen sentencias de CURSOR, no hay problemas de ejecución.
2. Si tienen sentencias con CURSORES (todos los tenemos con DECLARES en DATA DIVISION), aleatoriamente (muy frecuentemente) nos muestra un error SQLCODE -501 en ejecución, habiendo ejecutado antes algunas otras sentencias DB2 simples, o bien, siendo la primera sentencia de DB2.

¿Nos podéis ayudar para ver qué nos está faltando/sobrando?

Muchas gracias a todos por vuestra colaboración.
USCDA01
Usuario
Usuario
 
Mensajes: 5
Registrado: 03 Mar 2010, 10:39
País: España
Ciudad: Madrid
Ocupación: IT Specialist

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor Horacio Villa » 03 Mar 2010, 18:20

No me extraña que si no hay cursores no dé el -501, ya que este SQLCDE se da solamente para FETCH o CLOSE de cursor, no habieno hecho el correspondiente OPEN.
Esto es lo que debieran buscar: FETCH o CLOSE sin OPEN.
Muchas veces pasa que hace el CLOSE por algun error que el programa no maneja, y luego quiere hacer FETCH sin hacer el OPEN que le está faltando.
Sin mas datos, disculpen pero no es posible dar otra recomendación.
HV
Avatar de Usuario
Horacio Villa
Colaborador avanzado
Colaborador avanzado
 
Mensajes: 136
Registrado: 04 Dic 2003, 13:11
País: Argentina
Ciudad: Buenos Aires
Ocupación: Auditor de sistemas certificado

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor acevedo » 04 Mar 2010, 03:16

Horacio Villa escribió:Muchas veces pasa que hace el CLOSE por algun error que el programa no maneja, y luego quiere hacer FETCH sin hacer el OPEN que le está faltando.


también suele ocurrir cuando se hacen COMMITs y el cursor no está declarado con WITH HOLD.
Avatar de Usuario
acevedo
Colaborador Senior
Colaborador Senior
 
Mensajes: 335
Registrado: 01 Abr 2005, 14:36
País: España
Ciudad: -Sur-
Ocupación: Analista de desarrollo

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor USCDA01 » 04 Mar 2010, 09:53

Gracias por las respuestas.
Quizás no me he explicado bien puesto que todos nuestros programas están funcionando en la actualidad con Cobol 3.2 y, si compilamos con Cobol 3.4 pero con NEWFUN=NO también lo hacen.
No buscamos un problema en el código, que está más que revisado, sino en alguna PTF o alguna directiva de compilación o bind que no sea la correcta al utilizar el nivel 2 del Coprocesador al aplicar la opción de NEWFUN=YES.
USCDA01
Usuario
Usuario
 
Mensajes: 5
Registrado: 03 Mar 2010, 10:39
País: España
Ciudad: Madrid
Ocupación: IT Specialist

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor Carlos Alvarez Garcia » 10 Mar 2010, 11:18

Nosotros tenemos DB2 version 8 y cobol 3.4 y no tenemos inconvenientes te paso las opciones que tenemos seteadas para DB2 y Cobol, para que puedas revisarlas
DB2 SQL PRECOMPILER VERSION 8 REL. 1.0
APOST
APOSTSQL
ATTACH(TSO)
CCSID(500)
NOPADNTSTR
CONNECT(2)
DATE(ISO)
DEC(31)
FLAG(I)
HOST(IBMCOB)
LINECOUNT(56)
MARGINS(8,72)
NEWFUN(NO)
ONEPASS
OPTIONS
PERIOD
SOURCE
STDSQL(NO)
SQL(DB2)
NOXREF

IBM Enterprise COBOL for z/OS 3.4.1
Options in effect:
NOADATA
ADV
QUOTE
ARITH(EXTEND)
NOAWO
BUFSIZE(16384)
NOCICS
CODEPAGE(1140)
NOCOMPILE(S)
NOCURRENCY
DATA(31)
NODATEPROC
NODBCS
NODECK
NODIAGTRUNC
NODLL
NODUMP
NODYNAM
NOEXIT
NOEXPORTALL
NOFASTSRT
FLAG(W,W)
NOFLAGSTD
INTDATE(ANSI)
LANGUAGE(EN)
LIB
LINECOUNT(60)
NOLIST
MAP
NOMDECK
NONAME
NSYMBOL(DBCS)
NONUMBER
NUMPROC(NOPFD)
OBJECT
OFFSET
NOOPTIMIZE
OUTDD(SYSOUT)
PGMNAME(COMPAT)
NORENT
RMODE(ANY)
SEQUENCE
SIZE(MAX)
SOURCE
SPACE(1)
NOSQL
SSRANGE
TERM
TEST(NONE,SYM,NOSEPARATE)
NOTHREAD
TRUNC(OPT)
VBREF
NOWORD
XREF(SHORT)
YEARWINDOW(1900)
ZWB
Espero que te haya servido
CAG
Carlos Alvarez Garcia
Usuario
Usuario
 
Mensajes: 5
Registrado: 19 Nov 2007, 09:03
País: Argentina
Ciudad: Buenos Aires
Ocupación: Jefe de grupo

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor USCDA01 » 23 Mar 2010, 05:45

Muchas gracias por la información. Tomamos nota de todos los parámetros pero en nuestra instalación utilizamos el Coprocesador de DB2/Cobol en vez del precompilador.
USCDA01
Usuario
Usuario
 
Mensajes: 5
Registrado: 03 Mar 2010, 10:39
País: España
Ciudad: Madrid
Ocupación: IT Specialist

Re: Cobol 3.4 - Coprocesador DB2 -501 ejecución

Notapor USCDA01 » 15 Jun 2010, 05:02

Hemos encontrado la solución con la aplicación de la PTF PK17257 (UK10630) que gestiona la limpieza del RDI extended area:

000110 WORKING-STORAGE SECTION.
000110>> 01 SQL---PLIST GLOBAL.
.....
000110>> 02 SQL---CCSID PIC S9(4) COMP-5.
000110>> 02 SQL---STMT-TYPE PIC S9(4) COMP-5.
000110>> 02 SQL---STMT-NUM PIC S9(9) COMP-5.
000110>> 02 FILLER PIC X(20).
000110>>

Con la PK17257(COBOL APAR) aplicada, este area queda como:

000008>> 01 SQL---PLIST GLOBAL.
......
000008>> 02 SQL---CCSID PIC S9(4) COMP-5.
000008>> 02 SQL---STMT-TYPE PIC S9(4) COMP-5.
000008>> 02 SQL---STMT-NUM PIC S9(9) COMP-5.
000008>> 02 SQL---PLIST-FLG PIC S9(4) COMP-5 VALUE 0.
000008>> 02 FILLER PIC X(18) VALUE IS
000008>> X'000000000000000000000000000000000000'.
USCDA01
Usuario
Usuario
 
Mensajes: 5
Registrado: 03 Mar 2010, 10:39
País: España
Ciudad: Madrid
Ocupación: IT Specialist


Volver a Cobol

MKPortal ©2003-2008 mkportal.it