![]() |
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! :yess: Ejemplo: Código COBOL:
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. :hi: |
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 :
Código COBOL:
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 : Código COBOL:
Y todo queda como estaba. Y en el puntero, como bien dice @Kuk, queda el número de caracteres útiles del campo. |
Gracias @Kuk
Rm/cobobl lo tiene OpenCobol acabo de probarlo y tambien. |
YO siempre utilizo STORED-CHAR-LENGTH , pero muchísimas veces :)
|
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.
|
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. |
Cita:
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 |
@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. |
Cita:
|
Cita:
|
| La franja horaria es GMT +2. Ahora son las 14:01. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.