0

![]() |
![]() |
Super Moderador |
¿PRONOM?, ¿No te referirás a PROCOD?
COBOL Código:
03 PROCOD PIC S9(5). 03 PRONOM PIC X(40).
CODE Código:
'PROCOD' decimal(5,0) unsigned NOT NULL COMMENT 'NUM. PROVEEDOR', 'PRONOM' varchar(40) DEFAULT NULL COMMENT 'NOMBRE PROVEEDOR',
En cuanto al INTO, en otra tabla está puesto así y funciona, pero luego lo cambiaré a ver, y lo del *, pues al ser tantos campos, si tengo que definirlos todos en el SELECT, vaya palo.
Un saludo.-
![]() |
![]() |
Administrador |
Josber, los campos VARCHAR son campos compuestos, y en COBOL se representan asi:COBOL Código:
01 PRONOM. 49 PRONOM-LON PIC S9(4) COMP-4. *> CANTIDAD DE BYTES USADA 49 PRONOM-TXT PIC X(40). *> MAXIMO
Los niveles 49 deben ser 49 y no otro. Todos los VARCHAR contienen 2 bytes demas, al principio del campo en formato binario donde se indica la longitud, que deberiamos informar segun la longitud que vayamos a usar (de 1 a 40 en este caso). De hecho es la ventaja de los VARCHAR.
En cuanto a lo otro, para los DECIMAL debes usar COMP-3 (o que es lo mismo PACKED-DECIMAL), ademas en la tabla es UNSIGNED :COBOL Código:
01 PROCOD PIC 9(5) COMP-3.
Pero joe, todo esto son mas bien temas de rendimiento (menos lo del COMP-3). Pero entiendo que en otros sitios te funcion con DECIMAL numerico simple de COBOL? Ha de haber una conversion automatica, puede que en este caso falla por algo. Intenta cambiarlo por COMP-3 a ver que tal...
Si no, ya no se me ocurre nada mas....![]()
![]()
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Super Moderador |
No sabía lo del nivel 49 y que los VARCHAR eran campos compuesto, los puedo cambiar por TINYTEXT, aunque lo malo que tiene éste campo es que no pueden contener NULL, ni un valor declarado de inicio. En cuanto al UNSIGNED, si les quito el signo en la WORKING, a la hora de compilar, me dice que han de ser con signo obligatoriamente, si te pusiera la declaración de la WORKING, verías que todos los campos numéricos llevan signo, (CÓDIGO, TARIFA, GRUPO, NÚMERO DE CUENTA, etc.., y es una mier...).
Un saludo.-
Añadido despues de 2 horas 52 minutos
Confirmado Kuk, si pones COMP-3 y le quitas el signo, al compilar da el siguiente error:
FORM-PROVEEDORES-SQL WORKING-STORAGE(7) : JMN2898I-S The host variable of a binary, external decimal, or internal decimal item must contain the symbol S.
FORM-PROVEEDORES-SQL VIENE-DE-FORM-PRO-INI(85) : JMN3175I-S The USAGE of sending item 'PROCOD' in the STRING statement must be DISPLAY.
Un saludo.-
Última edición por Josber; 20.05.2015 a las 20:37 Razón: Post añadido
![]() |
![]() |
Administrador |
Josber, que yo sepa los VARCHAR pueden ser NULL... Pero estas cosas varian a veces, yo como uso DB2, es de lo que más sé. Lo mismo pasa con el signo, DB2 lo permite perfectamente sin signo.
Metele signo y COMP-3. Tambien prueba con COMP-4 en vez de COMP-3 y a ver que tal![]()
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)
Marcadores