Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   COBOL - General (https://www.cobolforo.es/forumdisplay.php?f=44)
-   -   [Sintaxis] Campos VARBINARY ó BLOB en COBOL (https://www.cobolforo.es/showthread.php?t=279)

Josber 1 de diciembre de 2015 18:06

Campos VARBINARY ó BLOB en COBOL
 
Alguien puede decirme la correspondencia de un campo en MYSQL definido como VARBINARY(64) cómo se definiría en COBOL, o en su defecto un campo BLOB en MYSQL

Muchas gracias.-

Kuk 1 de diciembre de 2015 23:05

Josber, los CLOB y BLOB no existen en COBOL, que yo sepa. El VARBINARY no sé ni lo que es. Pero seguramente sea una estructura parecida a la de VARCHAR, es decir:

Código COBOL:
  1.  01  MI-VARCHAR.
  2.      49  MI-VARCHAR-L  PIC S9(4) COMP-4.
  3.      49  MI-VARCHAR-X  PIC X(64).

Según he leído en internet, el VARBINARY ese es como el VARCHAR pero lleva otra codificación o algo así (he echado un ojo, tampoco he leído mucho) y no es un campo binario.

Fito 1 de diciembre de 2015 23:39

Hola:
Soy sumamente neófito en el tema, pero fijate si te sirve algo de esto.

saludos. Fito...

IBM Knowledge Center

Josber 2 de diciembre de 2015 19:21

Nada, no hay manera, necesito un campo tipo BLOB, (MediumBLOB para ser exactos) o VARBINARY, para poder encriptar un dato con AES_ENCRYPT, (según el manual de MySQL, es el tipo de campo que debe de usarse para un campo encriptado), y he probado de todas las formas que se me han ocurrido, incluso he creado el campo como VARCHAR, pero no funciona, cuando lo leo con AES_DECRYPT, me lo devuelve en blanco, ni siquiera NULL, sino en blanco.

Un saludo.-

Kuk 3 de diciembre de 2015 13:26

Josber, he mirado más por internet y lo que he encontrado definitivamente es lo que decía antes:

Cita:


TEXT and CHAR will convert to/from the character set they have associated with time. BLOB and BINARY simply store bytes.

BLOB is used for storing binary data while Text is used to store large string.

BLOB values are treated as binary strings (byte strings). They have no character set, and sorting and comparison are based on the numeric values of the bytes in column values.

TEXT values are treated as nonbinary strings (character strings). They have a character set, and values are sorted and compared based on the collation of the character set.

MySQL :: MySQL 5.0 Reference Manual :: 11.4.3 The BLOB and TEXT Types

Es decir, el BLOB como tal no existe en COBOL. Pero en definitiva sigue siendo texto, lo que pasa es que mientras que a los CHAR se les asigna un CHARACTER SET para mostrar el juego te caracteres correspondiente a una codificación, los BLOB y VARBINARY no tienen CHARACTER SET y se asigna byte por byte el código que tú le metas. Con lo cual, digo yo que debería funcionarte como si fuera un PIC X(?).

MySQL :: MySQL 5.0 Reference Manual :: 11.1.3 String Type Overview

Cita:

Specifying the CHARACTER SET binary attribute for a character data type causes the column to be created as the corresponding binary data type: CHAR becomes BINARY, VARCHAR becomes VARBINARY, and TEXT becomes BLOB.
La longitud del BLOB máxima es de 255 caracteres. Por ello debe ser, sea un PIC X(255), sea también puedes probar con un campo padre:

Código COBOL:
  1.  01  MI-BLOB.
  2.     49  FILLER PIC X(256).

Para VARBINARY debería ser sea:

Código COBOL:
  1.  01  MI-VARBIN.
  2.     49  MI-VARBIN-L PIC S9(4) COMP-4.
  3.     49  MI-VARBIN-D PIC X(256).

Sea lo mismo pero haciendo MI-VARBIN-D (datos) como MI-BLOB, es decir con campo padre.

A ver qué tal... ;)


La franja horaria es GMT +2. Ahora son las 00:23.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.