La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Cobol/598307-calcular-long-de-una-cadena.html

calcular long de una cadena

calcular long de una cadena

Publicado por David Parciasepe (1 intervención) el 16/02/2006 22:12:38
Estoy trabajando como trainee en una empresa cobol. Necesito una instruccion para calcular la longitud de una cadena de caracteres. Por favor si alguien podria sacarme de este apuro. Desde ya agradecido.

David

RE:calcular long de una cadena

Publicado por Alberto (72 intervenciones) el 17/02/2006 01:12:58
David:

Si tenemos la variable
77 CUANTOS PIC 999 VALUE 0
77 CADENACARACTERES PIC X(80) VALUE SPACES.

Hacemos INSPECT CUANTOS TALLYNG CADENACARACTERES FOR ALL " ".

Y nos quedara en CUANTOS el número de " " (espacios en blanco) que hay en la Cadena de Caracteres. Si ahora los restamos de la longitud de la variable.

COMPUTE CUANTOS = 80 - CUANTOS.

Tendremos el número de caracteres de la variable.

Espero que lo entiendas.

Un saludo desde Gijón-Asturias (España) Alberto.

RE:calcular long de una cadena

Publicado por Alex (1 intervención) el 05/02/2014 17:10:46
Hola,

Es en la variable de después del TALLYING donde se guarda el número de espacios encontrados. Por lo tanto deberías de cambiar el orden de tus variables en la sentencia.

Quedaría: INSPECT CADENACARACTERES TALLYING CUANTOS FOR ALL " ".


Saludos!
Alex.

RE:calcular long de una cadena

Publicado por Rolf (1 intervención) el 30/04/2019 20:23:59
Con esta instrucción se obtiene la cantidad de caracteres que no sean espacios, pero no la longitud de la cadena.
Si hay espacios intermedios estos no se cuentan.
Yo recomiendo:
003954 MOVE 80 TO CUANTOS.
003955 PERFORM UNTIL CADENACARACTERES(CUANTOS:1) <> " " or CUANTOS = 1
003956 SUBTRACT 1 FROM CUANTOS.

si quiero poner un cero binario después:
003957 MOVE x"00" to CADENACARACTERES(CUANTOS + 1:1).

RE:calcular long de una cadena

Publicado por SuperIndio (161 intervenciones) el 17/02/2006 18:05:30
En realidad no se bien que es lo que queres saber ???
Longitud de la Variables o cantidad de caracteres cargados dentro de una Variable
1) Para saber la Longitud de una Variables Pic X(nn) es:
01 Longitud Pic 9(04).
01 Mivar Pic X(34) Value "Cadenita"

en procedure
MOVE LENGTH OF Mivar TO Longitud
resultado : Longitud =34

si queres saber la cantidad de caracteres cargados dentro de una Variable
tener que hacer un PERFORM VARYING Ej:

01 Longitud Pic 9(04) Value 0.
01 Mivar Pic X(34) Value "Cadenita"
01 Ix Pic 9(02) Value 0.
01 Swt-Salida Pic 9(01) Value 0.
88 Salir Value 8.

Initialize Swt-Salida.
Perform Varying Ix From Logitud By -1 Until Ix = 0 Or Salir

*>-- Busca A Partir Del Ultmo Caracter D La Cadena De 34 Posiciones
*>-- Y Cuando Encuentra El Primer Caracter Que No Sea Espacio
*>-- Sale Del Bucle Y Tolis

If Miva(Ix:1) Not = " " Then
Set Salir To True
Move Ix To Ult-Caracter
End-If

End-Perform
Move Ult-Caracter To Longitud