Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
  COBOL Foro > IDE-s y compiladores COBOL > MicroFocus COBOL > RM/COBOL
RM/COBOL IDE y Compilador RM/COBOL
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Compilador] Advertencias en compilacion Fabio PowerCOBOL (ActiveX, v4 - v11) 8 23 de agosto de 2021 09:22
Respuesta
 
Herramientas

  #1
Antiguo 9 de mayo de 2022, 05:12
IDENTIFICATION DIVISION
dariodr
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de dariodr
DATA DIVISION
noviembre 2018
52 años
29.06.2022 11:44
PROCEDURE DIVISION
Posts: 16
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
dariodr is an unknown quantity at this point
Predeterminado Compilacion erronea

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 no ha iniciado sesión   Responder Con Cita
  #2
Antiguo 9 de mayo de 2022, 12:19
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
29.06.2022 13:50
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

@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 no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 9 de mayo de 2022, 14:21
IDENTIFICATION DIVISION
dariodr
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de dariodr
DATA DIVISION
noviembre 2018
52 años
29.06.2022 11:44
PROCEDURE DIVISION
Posts: 16
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
dariodr is an unknown quantity at this point
Predeterminado

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: 27
Tamaño:  8,5 KB  
dariodr no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 9 de mayo de 2022, 18:02
IDENTIFICATION DIVISION
JCantero
 Senior
Activista del Foro: Activista del Foro - Razón: Por participación activa  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros 
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
junio 2016
Albacete
56 años
28.06.2022 23:27
PROCEDURE DIVISION
Posts: 263
Enviado: 84
Recibido: 176
Soluciones: 11
Reputación: 24
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado

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 no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk ( 9 de mayo de 2022)
  #5
Antiguo 10 de mayo de 2022, 02:42
IDENTIFICATION DIVISION
dariodr
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de dariodr
DATA DIVISION
noviembre 2018
52 años
29.06.2022 11:44
PROCEDURE DIVISION
Posts: 16
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
dariodr is an unknown quantity at this point
Predeterminado

Gracias por la respuesta, lo pondre en practica.
Saludos.
dariodr no ha iniciado sesión   Responder Con Cita
  #6
Antiguo 10 de mayo de 2022, 08:20
IDENTIFICATION DIVISION
Josber
 Super Moderador
Activista del Foro: Activista del Foro - Razón: Por aportar manuales y enriquecer   Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos 
ENVIRONMENT DIVISION
Avatar de Josber
DATA DIVISION
febrero 2015
Alicante
29.06.2022 09:51
PROCEDURE DIVISION
Posts: 636
Enviado: 297
Recibido: 334
Soluciones: 45
Reputación: 35
Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road
Predeterminado

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 no ha iniciado sesión   Responder Con Cita
  #7
Antiguo 10 de mayo de 2022, 15:23
IDENTIFICATION DIVISION
Fito
 Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros  Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por el Avatar  Activista del Foro: Activista del Foro - Razón: Por aportar ideas 
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
febrero 2015
Córdoba, Villa María
51 años
28.06.2022 12:17
PROCEDURE DIVISION
Posts: 329
Enviado: 175
Recibido: 170
Soluciones: 16
Reputación: 24
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado

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 no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
JCantero (10 de mayo de 2022)
  #8
Antiguo 10 de mayo de 2022, 19:18
IDENTIFICATION DIVISION
JCantero
 Senior
Activista del Foro: Activista del Foro - Razón: Por participación activa  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros 
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
junio 2016
Albacete
56 años
28.06.2022 23:27
PROCEDURE DIVISION
Posts: 263
Enviado: 84
Recibido: 176
Soluciones: 11
Reputación: 24
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado

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 no ha iniciado sesión   Responder Con Cita
  #9
Antiguo 13 de mayo de 2022, 09:12
IDENTIFICATION DIVISION
Josber
 Super Moderador
Activista del Foro: Activista del Foro - Razón: Por aportar manuales y enriquecer   Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos 
ENVIRONMENT DIVISION
Avatar de Josber
DATA DIVISION
febrero 2015
Alicante
29.06.2022 09:51
PROCEDURE DIVISION
Posts: 636
Enviado: 297
Recibido: 334
Soluciones: 45
Reputación: 35
Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road
Predeterminado

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

Josber no ha iniciado sesión   Responder Con Cita
  #10
Antiguo 13 de mayo de 2022, 10:31
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
29.06.2022 13:50
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

@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 no ha iniciado sesión   Responder Con Cita
Respuesta


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
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



La franja horaria es GMT +1. Ahora son las 14:51.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2022, Jelsoft Enterprises Ltd.