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 ----------
Código COBOL:
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 ----------
Código COBOL:
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.