Página 1 de 2 1 2 ÚltimoÚltimo
Resultados 1 al 10 de 13

Tema: Obtener la longitud del contenido de una variable

  1. #1
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    37
    Mensajes
    2,025
    Última visita
    Hoy a las 10:52

    Agradecimientos
     
    Recibidos
    869
    Enviados
    734

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    6 Post(s)
    Poder de Reputación
    10

    Talking Obtener la longitud del contenido de una variable

    Amigos, hay una maravilla en Cobol que muchos desconocen. Así que he pensado en compartirla.

    En Fujitsu hay una función, que es la STORED-CHAR-LENGTH la que nos dice la longitud del valor de un campo. Pero en otros Cobol esta función no existe.

    Pero lo que muchos no saben, es que el verbo STRING de Cobol puede decirnoslo si lo usamos con el añadido WITH POINTER!

    Ejemplo:
    COBOL Código:
    1.        IDENTIFICATION DIVISION.
    2.        PROGRAM-ID.    PROGRAM1.
    3.  
    4.        DATA DIVISION.
    5.        WORKING-STORAGE SECTION.
    6.        01  WS-A  PIC X(15) VALUE "ABCDE 12".
    7.        01  WS-C  PIC X(15).
    8.        
    9.        01  IDX-1 PIC 99 VALUE 1.
    10.        
    11.        PROCEDURE DIVISION.
    12.            
    13.            STRING WS-A
    14.                DELIMITED BY "  "
    15.                INTO WS-C
    16.                WITH POINTER IDX-1
    17.            
    18.            DISPLAY IDX-1
    19.            
    20.            GOBACK
    21.            .

    En IDX-1 vamos a tener el número correspondiente al primer caracter "libre" después de haber realizado el STRING, o sea en el caso del ejemplo, vamos a tener un 9.

    Con lo cual, la longitud del contenido siempre será IDX-1 - 1.

    Evidentemente este ejemplo es para una cadena con espacios en medio (por eso en DELIMITED hay 2 espacios) pero se puede adaptar según necesitad.

    Espero que sirva a alguien.


    0 Not allowed!
    ¿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:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  2. #2
      Forero
    G

    Registrado
    febrero de 2015
    Ubicación
    Quilmes, Buenos Aires
    Edad
    67
    Mensajes
    187
    Última visita
    22.09.2022

    Agradecimientos
     
    Recibidos
    119
    Enviados
    91

    Citaciones y menciones
     
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    2 Post(s)
    Poder de Reputación
    19
    Concurso: Segundo puesto / Point Value: 0 Activista del Foro / Point Value: 0

    Predeterminado

    Yo hago algo parecido, pero previendo que entre medio de los datos útiles haya mas de un espacio mando cualquier cosa al final de la variable. Ejemplo :

    COBOL Código:
    1. INSPECT WS-A REPLACING TRAILING SPACES BY "!"

    Se que en esta variable no puede haber "!", de lo contrario reemplazo por cualquier otro caracter.
    Y si necesito la variable como estaba al inicio :

    COBOL Código:
    1. INSPECT WS-A REPLACING ALL "!" BY " "

    Y todo queda como estaba.

    Y en el puntero, como bien dice @Kuk, queda el número de caracteres útiles del campo.

    0 Not allowed!

  3. #3
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    293
    Última visita
    Hoy a las 21:23

    Agradecimientos
     
    Recibidos
    191
    Enviados
    99

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    1 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Gracias @Kuk

    Rm/cobobl lo tiene
    OpenCobol acabo de probarlo y tambien.

    0 Not allowed!

  4. #4
      Guru de COBOL
    Avatar de Nitzer

    Registrado
    noviembre de 2015
    Ubicación
    Almeria
    Edad
    57
    Mensajes
    162
    Última visita
    12.08.2022

    Agradecimientos
     
    Recibidos
    112
    Enviados
    65

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    18
    Activista del Foro / Point Value: 0 Guru de los Gurus / Point Value: 0

    Predeterminado

    YO siempre utilizo STORED-CHAR-LENGTH , pero muchísimas veces

    0 Not allowed!

  5. #5
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    37
    Mensajes
    2,025
    Última visita
    Hoy a las 10:52

    Agradecimientos
     
    Recibidos
    869
    Enviados
    734

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    6 Post(s)
    Poder de Reputación
    10

    Predeterminado

    El de Micro Focus no lo tiene (cosa que me parece muy rara porque el Cobol de MF es el más rico normalmente), y el de IBM para Mainframes tampoco.

    0 Not allowed!
    ¿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:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  6. #6
      Forero
    G

    Registrado
    febrero de 2015
    Ubicación
    Quilmes, Buenos Aires
    Edad
    67
    Mensajes
    187
    Última visita
    22.09.2022

    Agradecimientos
     
    Recibidos
    119
    Enviados
    91

    Citaciones y menciones
     
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    2 Post(s)
    Poder de Reputación
    19
    Concurso: Segundo puesto / Point Value: 0 Activista del Foro / Point Value: 0

    Predeterminado

    AcuCobol tampoco. Tiene funciones de todo tipo, pero esto no lo tiene.

    Me refiero a la versión 5.1, no se si alguna posterior lo tendrá.

    Pero bueno, con un par de pasitos extra se soluciona.

    0 Not allowed!

  7. #7
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    293
    Última visita
    Hoy a las 21:23

    Agradecimientos
     
    Recibidos
    191
    Enviados
    99

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    1 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Cita Iniciado por Gusaiello Ver Mensaje
    AcuCobol tampoco. Tiene funciones de todo tipo, pero esto no lo tiene.

    Me refiero a la versión 5.1, no se si alguna posterior lo tendrá.

    Pero bueno, con un par de pasitos extra se soluciona.

    Acucobol tambien lo lleva.

    https://www.microfocus.com/documenta...00001S223.html


    La version rm/cobol 5.35 con la cual yo empece hace 30 años (1990) ya lo llevaba.

    "string" es un estandard (COBOL-85) y en todos los cobol esa caracteristica debe de llevarla integrada al menos si es compatible COBOL-85

    0 Not allowed!

  8. #8
      Forero
    G

    Registrado
    febrero de 2015
    Ubicación
    Quilmes, Buenos Aires
    Edad
    67
    Mensajes
    187
    Última visita
    22.09.2022

    Agradecimientos
     
    Recibidos
    119
    Enviados
    91

    Citaciones y menciones
     
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    2 Post(s)
    Poder de Reputación
    19
    Concurso: Segundo puesto / Point Value: 0 Activista del Foro / Point Value: 0

    Predeterminado

    @JCantero, no me refería a STRING.

    STRING viene de larga data.

    Me refería a que Acu no tiene la forma de saber cuanto miden los datos útiles de una variable, y por eso hay que usar otros recursos.

    0 Not allowed!

  9. #9
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    293
    Última visita
    Hoy a las 21:23

    Agradecimientos
     
    Recibidos
    191
    Enviados
    99

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    1 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Cita Iniciado por Gusaiello Ver Mensaje
    @JCantero, no me refería a STRING.

    STRING viene de larga data.

    Me refería a que Acu no tiene la forma de saber cuanto miden los datos útiles de una variable, y por eso hay que usar otros recursos.
    Lo que ha puesto @Kuk al inicio del hilo este, para ver los datos útiles de esa forma, funciona en Acu.

    0 Not allowed!

  10. #10
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    37
    Mensajes
    2,025
    Última visita
    Hoy a las 10:52

    Agradecimientos
     
    Recibidos
    869
    Enviados
    734

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    6 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Cita Iniciado por JCantero Ver Mensaje
    funciona en Acu
    Debe de funcionar en cualquier Cobol.

    0 Not allowed!
    ¿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:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

Página 1 de 2 1 2 ÚltimoÚltimo

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Sintaxis] Máximo valor de una variable
    Por Begoguay en el foro COBOL - General
    Respuestas: 6
    Último Mensaje: 04.05.2020, 19:46
  2. [Sintaxis] Traspasar el valor de una variable
    Por jmeza en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 2
    Último Mensaje: 30.05.2019, 01:20
  3. [Aporte] Tablas bidimensionales de longitud variable
    Por Kuk en el foro Cocina MicroFocus
    Respuestas: 2
    Último Mensaje: 23.05.2018, 11:13
  4. [Sintaxis] Informar variable JCL con contenido de fichero.
    Por RaulC en el foro JCL y utilidades
    Respuestas: 9
    Último Mensaje: 04.04.2018, 20:47
  5. [Sintaxis] Obtener una ruta en Red
    Por Roger en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 16
    Último Mensaje: 01.05.2015, 22:40

Etiquetas para este Tema

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •