0

![]() |
Hola amigos de nuevo por aca desempolvando mi rm/cobol85.
Tengo este codigo pero a la hora de compilar me aparece error en FUNCTION LENGTH.
Saludos.
COBOL Código:
IDENTIFICATION DIVISION. PROGRAM-ID. LONGITUD. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 LONGITUD PIC 99. 01 TEXTO PIC X(36) VALUE "Sistema de Control de Calificaciones". * PROCEDURE DIVISION. PRINCIPAL. MOVE FUNCTION LENGTH(TEXTO) TO LONGITUD. DISPLAY "La longitud de la cadena es:" LONGITUD. STOP RUN.
![]() |
@dariodr, lo mismo tiene que ir en un COMPUTE y no en un MOVE ?
¿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 editor al botón
y escribiendo su nick.
![]() |
Hola, he probado con COMPUTE y tambien da error.
Este es el error en rm/cobol85
![]() |
En RM/Cobol no existe ningun tipo "function".
Tienes que hacerlo con un bucle "perform" o con "string".
Aqui te adjunto el manual https://www.microfocus.com/documenta...15/RMC-LRM.pdf
---------- Post añadido el 9 de mayo de 2022 a las 19:21 ----------
Tienes un hilo del foro que habla de eso
[Aporte] Obtener la longitud del contenido de una variable - COBOL Foro
---------- Post añadido el 9 de mayo de 2022 a las 19:28 ----------
Yo personalmente lo implemento con un perform
---------- Post añadido el 9 de mayo de 2022 a las 19:35 ----------
COBOL Código:
IDENTIFICATION DIVISION. PROGRAM-ID. LONGITUD. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 LONGITUD PIC 99. 01 TEXTO PIC X(36) VALUE "Sistema de Control de Calificaciones". * PROCEDURE DIVISION. PRINCIPAL. perform varying longitud from 1 by 1 until longitud = 36 or texto(longitud:) = ' ' continue end-perform. DISPLAY "La longitud de la cadena es:" LONGITUD. STOP RUN.
Logicamente si la longitud de texto es mayor, por ejemplo 200, debemos de modificar 36 por 200
---------- Post añadido el 9 de mayo de 2022 a las 19:36 ----------
COBOL Código:
IDENTIFICATION DIVISION. PROGRAM-ID. LONGITUD. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 LONGITUD PIC 99. 01 TEXTO PIC X(200) VALUE "Sistema de Control de Calificaciones". * PROCEDURE DIVISION. PRINCIPAL. perform varying longitud from 1 by 1 until longitud = 200 or texto(longitud:) = ' ' continue end-perform. DISPLAY "La longitud de la cadena es:" LONGITUD. STOP RUN.
![]() |
Gracias por la respuesta, lo pondre en practica.
Saludos.
![]() |
A ver, ese bucle, tiene el problema de que en cuanto encuentre el primer espacio en blanco, para, por lo que, en este caso, en cuanto llegara al espacio en blanco que hay en el valor de la variable, después de "Sistema", se pararía. Tiene que ser un bucle inverso, que empiece por el final, hasta llegar al principio.
COBOL Código:
IDENTIFICATION DIVISION. PROGRAM-ID. LONGITUD. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 LONGITUD PIC 99. 01 TEXTO PIC X(36) VALUE "Sistema de Control de Calificaciones". * PROCEDURE DIVISION. PRINCIPAL. perform varying longitud from 36 by -1 until longitud = 1 or texto(longitud:) not = ' ' continue end-perform. DISPLAY "La longitud de la cadena es:" LONGITUD. STOP RUN.
Como te indican, si cambias el tamaño de la variable, cambias el bucle, (ten en ecuenta de mirar también la PICTURE del contador, que sea la apropiada)
Un salu2.-
![]() |
Hola @Josber,
No, está bien asi como lo publicaron, Fijate de está analizando desde la posición hacia el final.
Lo único que cuando lo pasó para 200 caracteres, la variable LONGITUD quedó de 99 en vez de 999.
Saludos..
Fito...
![]() |
![]() |
¿Dónde ha ido a parar todo el código COBOL que había en éste post? ....
![]()
![]()
![]()
![]() |
@Josber, ha habido algún problema. Al editar vuelven a salir.... No sé, voy a ver...
Si veis algo así en otros posts, decídmelo.
¿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 editor al botón
y escribiendo su nick.
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)