Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Micro Focus COBOL RM/COBOL
RM/COBOL IDE y Compilador RM/COBOL
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Errores de compilación en PowerCOBOL v3 britolugo PowerCOBOL v3 (V3L10, Win32) 3 29 de noviembre de 2024 19:22
[Compilador] Advertencias en compilacion Fabio PowerCOBOL (ActiveX, v4 - v11) 8 23 de agosto de 2021 10:22
[Compilador] Compilación fallida al copiar proyecto a otro PC Lecterman PowerCOBOL (ActiveX, v4 - v11) 7 9 de junio de 2021 15:05

Respuesta

  #1
Antiguo 9 de mayo de 2022, 06:12
dariodr
Forero
Última Actividad 20.09.2026 10:04
Posts Posts: 57
Likes enviados Enviados: 17
Likes recibidos Recibidos: 11
Predeterminado Compilacion erronea
0 Inactivo Inactivo

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.

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. LONGITUD.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.      *
  6.        DATA DIVISION.
  7.        WORKING-STORAGE SECTION.
  8.        01  LONGITUD  PIC 99.
  9.        01  TEXTO     PIC X(36)
  10.                      VALUE "Sistema de Control de Calificaciones".
  11.      *
  12.        PROCEDURE DIVISION.
  13.        PRINCIPAL.
  14.            MOVE FUNCTION LENGTH(TEXTO) TO LONGITUD.
  15.            DISPLAY "La longitud de la cadena es:" LONGITUD.
  16.            STOP RUN.
  17.            
  18.                        
dariodr is offline   Responder Con Cita
  #2
Antiguo 9 de mayo de 2022, 13:19
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@dariodr, lo mismo tiene que ir en un COMPUTE y no en un MOVE ?



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 9 de mayo de 2022, 15:21
dariodr
Forero
Última Actividad 20.09.2026 10:04
Posts Posts: 57
Likes enviados Enviados: 17
Likes recibidos Recibidos: 11

Hola, he probado con COMPUTE y tambien da error.

Este es el error en rm/cobol85

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  error.png
Vistas: 76
Tamaño:  8,5 KB  
dariodr is offline   Responder Con Cita
  #4
Antiguo 9 de mayo de 2022, 19:02
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

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:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. LONGITUD.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.      *
  6.        DATA DIVISION.
  7.        WORKING-STORAGE SECTION.
  8.        01  LONGITUD  PIC 99.
  9.        01  TEXTO     PIC X(36)
  10.                      VALUE "Sistema de Control de Calificaciones".
  11.      *
  12.        PROCEDURE DIVISION.
  13.        PRINCIPAL.
  14.            perform varying longitud from 1 by 1 until
  15.                  longitud = 36 or texto(longitud:) = ' '
  16.               continue
  17.            end-perform.
  18.  
  19.            DISPLAY "La longitud de la cadena es:" LONGITUD.
  20.            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:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. LONGITUD.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.      *
  6.        DATA DIVISION.
  7.        WORKING-STORAGE SECTION.
  8.        01  LONGITUD  PIC 99.
  9.        01  TEXTO     PIC X(200)
  10.                      VALUE "Sistema de Control de Calificaciones".
  11.      *
  12.        PROCEDURE DIVISION.
  13.        PRINCIPAL.
  14.            perform varying longitud from 1 by 1 until
  15.                  longitud = 200 or texto(longitud:) = ' '
  16.               continue
  17.            end-perform.
  18.  
  19.            DISPLAY "La longitud de la cadena es:" LONGITUD.
  20.            STOP RUN.
JCantero is offline   Responder Con Cita
  #5
Antiguo 10 de mayo de 2022, 03:42
dariodr
Forero
Última Actividad 20.09.2026 10:04
Posts Posts: 57
Likes enviados Enviados: 17
Likes recibidos Recibidos: 11

Gracias por la respuesta, lo pondre en practica.
Saludos.
dariodr is offline   Responder Con Cita
  #6
Antiguo 10 de mayo de 2022, 09:20
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

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.

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. LONGITUD.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.      *
  6.        DATA DIVISION.
  7.        WORKING-STORAGE SECTION.
  8.        01  LONGITUD  PIC 99.
  9.        01  TEXTO     PIC X(36)
  10.                      VALUE "Sistema de Control de Calificaciones".
  11.      *
  12.        PROCEDURE DIVISION.
  13.        PRINCIPAL.
  14.            perform varying longitud from 36 by -1 until
  15.                  longitud = 1 or texto(longitud:) not = ' '
  16.               continue
  17.            end-perform.
  18.  
  19.            DISPLAY "La longitud de la cadena es:" LONGITUD.
  20.            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.-
Josber is offline   Responder Con Cita
  #7
Antiguo 10 de mayo de 2022, 16:23
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

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...
Fito is offline   Responder Con Cita
  #8
Antiguo 10 de mayo de 2022, 20:18
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

Citación del post de Fito Ver Mensaje
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...
Si, llevas razón, puse un ejemplo pero sin percatarme de ello. Yo siempre utilizo variables grandes para estas cosas.

Código COBOL:
  1.                  01 longitud 9(6).
JCantero is offline   Responder Con Cita
  #9
Antiguo 13 de mayo de 2022, 10:12
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

¿Dónde ha ido a parar todo el código COBOL que había en éste post? ....

Josber is offline   Responder Con Cita
  #10
Antiguo 13 de mayo de 2022, 11:31
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@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.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:13.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.