Página 1 de 2 1 2 ÚltimoÚltimo
Resultados 1 al 10 de 20

Tema: Darle la vuelta a un campo

  1. #1
      Junior
    Avatar de CHITOBLA

    Registrado
    octubre de 2022
    Ubicación
    Capotal Federal
    Edad
    75
    Mensajes
    58
    Última visita
    28.12.2022

    Agradecimientos
     
    Recibidos
    17
    Enviados
    73

    Citaciones y menciones
     
    Mentioned
    32 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    9 Post(s)
    Poder de Reputación
    0

    Lightbulb Darle la vuelta a un campo

    Hola coboleros, como están.
    Tengo un problema que hace mas de 2 días estoy tratando de resolver y no he podido y por esto les escribo a los que tienen mucha mas experiencia que yo.

    Antes que nada quiero que sepan que estoy usando como compilador el Open COBOL Ide, lo cual como saben es el de los mas simples y fáciles.

    El problema que quiero resolver es poder DAR VUELTA UN CAMPO ALFANUMERICO.

    Les doy un ejemplo: si introduzco por ejemplo la frase "hoy llueve" quisiera tener en otro campo lo siguiente: "eveull yoh".

    Espero haber sido claro con el ejemplo.
    He hecho todas las pruebas que he podido leyendo y copiando alternativas, sacando espacios de adelante, de atrás, copiando la frase ingresada a otra variable, pero no le he encontrado la vuelta para poder reversar una frase ingresada en otra variable.

    Yo use en un curso que hice hace poco el lenguaje PSEINT que es para aprendices y es en español, y era facil resolver este problema como quizás lo sea en otros lenguajes, pero en COBOL al menos yo no lo he podido.

    En ese curso tuvimos un problema que era resolver si un numero es "capicúa", es decir que si lo miras de izquierda a derecha es el mismo numero que si lo miras de derecha a izquierda.
    Aquí en el Rio de la Plata se le dice "capicúa".
    Como ejemplo les doy el número 12121.

    Aguardo si alguien con mucha mas experiencia cobolera y les recuerdo que debería ser una solución ANSI 74 u 85 por el compilador que tengo.

    No quise escribirles hasta no probar todo lo que he podido leer, ver y sobre todo cobolear.

    Un abrazo a todos y que tengamos una muy buena semana.
    Gracias.

    0 Not allowed!

  2. #2
      Acabo de llegar...
    d

    Registrado
    noviembre de 2018
    Edad
    53
    Mensajes
    24
    Última visita
    Hoy a las 03:23

    Agradecimientos
     
    Recibidos
    10
    Enviados
    3

    Citaciones y menciones
     
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Hola, visita esta pagina creo que te puede servir.
    Saludos.

    https://iamamainframer.blogspot.com/...l-without.html

    0 Not allowed!

  3. #3
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Ubicación
    Alicante
    Mensajes
    738
    Última visita
    Ayer a las 16:30

    Agradecimientos
     
    Recibidos
    405
    Enviados
    333

    Citaciones y menciones
     
    Mentioned
    65 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    8 Post(s)
    Poder de Reputación
    36
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    @CHITOBLA, para el tema del capicúa, prueba con éste código

    COBOL Código:
    1.        IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. CAPICUA.
    3.        ENVIRONMENT DIVISION.
    4.        DATA DIVISION.
    5.        WORKING-STORAGE SECTION.
    6.        01  TECLA                        PIC X.
    7.        01  I                            PIC 99 COMP-5.
    8.        01  J                            PIC 99 COMP-5.
    9.        01  K                            PIC 99 COMP-5.
    10.        01  L                            PIC 99 COMP-5.
    11.        01  NUM                          PIC 9(10) USAGE IS DISPLAY.
    12.        01  EDI  REDEFINES NUM.
    13.            03  E                        PIC X OCCURS 10.
    14.        01  WTEX.
    15.            03  FILLER                   PIC X(10)
    16.                        VALUE "El numero ".
    17.            03  EDITADO                  PIC Z(10).
    18.            03  FILLER                   PIC XX VALUE ", ".
    19.            03  SINO                     PIC XX VALUE SPACES.
    20.            03  FILLER                   PIC X(9) VALUE " Capicua.".
    21.        PROCEDURE DIVISION.
    22.        INICIO.
    23.            INITIALIZE TECLA I J K L NUM.
    24.        ACEPTAR.
    25.            DISPLAY "Introduzca número (Cero para terminar): ".
    26.            ACCEPT NUM CONTROL "TAB, NO BEEP".
    27.            IF NUM = 0
    28.               STOP RUN
    29.            END-IF.
    30.  
    31.            IF NUM < 9
    32.               DISPLAY "El número tiene que ser mayor de 9"
    33.               GO ACEPTAR
    34.            END-IF.
    35.  
    36.            MOVE NUM TO EDITADO.
    37.      *
    38.        COMPROBAR.
    39.      *  Vamos a comprobar la longitud del número.
    40.            PERFORM VARYING I FROM 1 BY 1
    41.                    UNTIL I > 10 OR E(I) NOT = "0"
    42.                          CONTINUE
    43.            END-PERFORM.
    44.      *  Sacamos el centro del número.
    45.            COMPUTE J = (10 - I) / 2 + I.
    46.      *
    47.            MOVE 10 TO L.
    48.      *  Comprobamos, se prdría hacer con 2 perform anidados
    49.      *  pero para no liar ...
    50.            PERFORM VARYING K FROM I BY 1
    51.                    UNTIL I > J OR L < J
    52.                          IF E (K) NOT = E (L)
    53.                             MOVE "NO" TO SINO
    54.                             DISPLAY WTEX
    55.                             STOP RUN
    56.                          ELSE
    57.                             SUBTRACT 1 FROM L
    58.                          END-IF
    59.            END-PERFORM.
    60.      *  Si llegamos aquí, es capicúa
    61.            MOVE "SÍ" TO SINO.
    62.            DISPLAY WTEX.
    63.            DISPLAY " ".
    64.            DISPLAY "... Pulse una tecla para continuar ..."
    65.            ACCEPT TECLA.
    66.            GO INICIO.

    No lo puedo probar, porque no tengo ningún compilador que funcione en MS-DOS en una máquina de 64 bits, pero al compilarlo, no da errores, que ya es algo. Está lo más "estandarizado" posible, (por eso no hay ningún LINE o POSITION en los DISPLAY), para ANSI-74, seguro que no funciona, porque esa versión no contemplaba los END-xxxxx.

    Un salu2.-

    0 Not allowed!

  4. #4
      Junior
    Avatar de CHITOBLA

    Registrado
    octubre de 2022
    Ubicación
    Capotal Federal
    Edad
    75
    Mensajes
    58
    Última visita
    28.12.2022

    Agradecimientos
     
    Recibidos
    17
    Enviados
    73

    Citaciones y menciones
     
    Mentioned
    32 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    9 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Josber buenas trdes.
    Te agradezco infinitamente las 2 cosas que me has mandado.

    La pagina es exactamente lo que buscaba aunque todavia no lo probe porque quise contestarte lo antes posible ya que has tomado un tiempo para resolver mi problema.

    He copiado lo que me mandaste del tema "CAPICUA" y ajustado algunas cosas que mi compilador no acepta.

    A pesar de no marcarme ningún error, NO QUIERE COMPILAR y no dice porque, sale este mensaje que parece no tener sentido (para mi):
    "PRUEBA 2.cbl": line 1 Invalid argument

    Toque otro botón en la ventana que abre el compilador y me salió este mensaje::
    CODE Código:
    1. cobc.exe -x -o bin\PRUEBA 2.exe -std=cobol85 -Wall -debug "PRUEBA 2.cbl"
    que no entiendo bien que quiere decir, fui a buscar al directorio que dice pero solo encontré el programa

    Desde ya te agradezco muchísimo el tiempo que te has tomado para escribir el programa y te mantendré informado como me va con los cambios.

    Un afectuoso abrazo.
    G R A C I A S.

    0 Not allowed!

  5. #5
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Ubicación
    Alicante
    Mensajes
    738
    Última visita
    Ayer a las 16:30

    Agradecimientos
     
    Recibidos
    405
    Enviados
    333

    Citaciones y menciones
     
    Mentioned
    65 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    8 Post(s)
    Poder de Reputación
    36
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    @CHITOBLA, ¿Qué compilador estás usando?, a ver si lo puedo descargar y me funciona en 64bits

    0 Not allowed!

  6. #6
      Junior
    Avatar de CHITOBLA

    Registrado
    octubre de 2022
    Ubicación
    Capotal Federal
    Edad
    75
    Mensajes
    58
    Última visita
    28.12.2022

    Agradecimientos
     
    Recibidos
    17
    Enviados
    73

    Citaciones y menciones
     
    Mentioned
    32 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    9 Post(s)
    Poder de Reputación
    0

    Thumbs up

    Josber estoy usando el OPEN COBOL IDE 4.7.6 que es la ultima versión para Windows.
    Te cuento que mi netbook es de 64 bits también.
    Por mas que he intentado muchas variantes no lo he podido compilar.

    Te quiero contar que el link que me diste para dar vuelta las palabras funciona MARAVILLOSO y lo he usado para el tema del CAPICUA.
    Lo que he hecho es que si en lugar de letras pongo números como
    "12321" y hago la comparación entre el original y el dado vuelta, hago un display "ES CAPICUA.

    Aqui te copio el programa y depende el numero que pongas debes corregir el tamaño de la variable porque sino no son comparables.

    COBOL Código:
    1.        IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. REVERS.
    3.        DATA DIVISION.
    4.  
    5.        WORKING-STORAGE SECTION.
    6.            01 WS-A PIC X(7) VALUE '1234333'.
    7.            01 WS-OUT PIC X(7).[/SIZE]
    8.            01 WS-I   PIC   9(3) VALUE 0.
    9.            01 WS-J   PIC   9(2) VALUE 1.
    10.            01 WS-LEN PIC 9(3) VALUE 0.
    11.  
    12.        PROCEDURE DIVISION.
    13.            MOVE FUNCTION LENGTH(WS-A) TO WS-LEN.
    14.            PERFORM VARYING WS-I FROM WS-LEN BY -1 UNTIL WS-I = 0
    15.              MOVE WS-A(WS-I:1) TO WS-OUT(WS-J:1)
    16.              ADD 1 TO WS-J
    17.            END-PERFORM.
    18.            DISPLAY " ".  
    19.            DISPLAY "      ORIGINAL:  " WS-A.
    20.            DISPLAY "      DADO VUELTA:  " WS-OUT.
    21.            DISPLAY " ".
    22.            IF WS-A = WS-OUT
    23.                DISPLAY " ES CAPICUA !!!!!"
    24.            ELSE
    25.                DISPLAY " !!!!! NO ES CAPICUA !!!!!"
    26.             STOP RUN.

    Pero si pongo por ejemplo "1234333" y hago la comparación entre el original y el dado vuelta pongo un display " NO ES CAPICUA".

    Esto es lo que yo quería y tu me lo has conseguido.
    GRACIAS GRACIAS GRACIAS.

    Cuéntame porque no compila tu programa que obviamente es totalmente distinto ya que para mi es un misterio.

    Te mando un abrazo y muchísimas gracias por tu tiempo en mi problema que al final con un poco de maña y astucia (esto es lo que sobra por estos lados), he resuelto las 2 cosas que quería y aprendido un poco mas de cobol.

    Mensaje de MODERADOR

    Usa los botones de resalto de sintaxis

    0 Not allowed!

  7. #7
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    336
    Última visita
    Hoy a las 09:18

    Agradecimientos
     
    Recibidos
    221
    Enviados
    128

    Citaciones y menciones
     
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    6 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    @CHITOBLA, Ahí tienes una posibilidad que funciona con Cobol IDE

    COBOL Código:
    1. ******************************************************************
    2.      * Author: jcantero
    3.      * Date: 24/10/2022
    4.      * Purpose: Dar vuelta cadena para ForoCobol
    5.      * Tectonics: cobc
    6.      ******************************************************************
    7.        IDENTIFICATION DIVISION.
    8.        PROGRAM-ID. YOUR-PROGRAM-NAME.
    9.        DATA DIVISION.
    10.        FILE SECTION.
    11.        WORKING-STORAGE SECTION.
    12.        01 cadena pic x(80).
    13.        01 cadenax pic x(80).
    14.        01 i pic 999.
    15.        01 j pic 999.
    16.        
    17.        PROCEDURE DIVISION.
    18.        
    19.        MAIN-PROCEDURE.
    20.            
    21.             initialize cadena cadenax.
    22.             display "Introducir cadena:"
    23.             accept cadena
    24.            
    25.             move 0 to j.
    26.             perform varying i from 80 by -1 until i = 0
    27.             if cadena(i:) not = ' ' then
    28.                add 1 to j
    29.                move cadena(i:1) to cadenax(j:1)
    30.             end-if
    31.             end-perform.
    32.                
    33.             display "Cadena resultado:".          
    34.             display cadenax.
    35.            
    36.             STOP RUN.
    37.            
    38.        END PROGRAM YOUR-PROGRAM-NAME.
    39.  

    0 Not allowed!

  8. #8
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    38
    Mensajes
    2,157
    Última visita
    Hoy a las 10:40

    Agradecimientos
     
    Recibidos
    957
    Enviados
    827

    Citaciones y menciones
     
    Mentioned
    71 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    15 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @CHITOBLA,

    COBOL Código:
    1.        working-storage section.
    2.        
    3.        01  frase      pic x(100).
    4.        01  resultado  pic x(100).
    5.        01  lim        pic 9(4) comp-5.
    6.        01  idx        pic 9(4) comp-5.
    7.        
    8.        procedure division.
    9.            
    10.            move "hola amigos" to frase
    11.            
    12.            perform varying lim from length of frase by -1
    13.                until frase(lim:1) not = spaces or lim = 1
    14.            end-perform
    15.            
    16.            perform varying idx from 0 by 1 until idx > lim / 2  
    17.                move frase(lim - idx + 1:1) to resultado(idx:1)
    18.                move frase(idx:1)           to resultado(lim - idx + 1:1)
    19.            end-perform
    20.            
    21.            if  function rem(lim 2) = 1
    22.                move frase(lim / 2 + 1:1) to resultado(lim / 2 + 1:1)    
    23.            end-if
    24.            
    25.            display resultado

    0 Not allowed!
    ¿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:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  9. #9
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    38
    Mensajes
    2,157
    Última visita
    Hoy a las 10:40

    Agradecimientos
     
    Recibidos
    957
    Enviados
    827

    Citaciones y menciones
     
    Mentioned
    71 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    15 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @JCantero, me gusta lo de

    COBOL Código:
    1. if cadena(i:) not = ' '

    0 Not allowed!
    ¿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:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  10. #10
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    336
    Última visita
    Hoy a las 09:18

    Agradecimientos
     
    Recibidos
    221
    Enviados
    128

    Citaciones y menciones
     
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    6 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    @Kuk, lo utilizo muchísimo. Te ahorra mucha lógica en algoritmos que tratan "string"

    En RM/Cobol eso de from length of frase no lo puedo utilizar.

    0 Not allowed!

Página 1 de 2 1 2 ÚltimoÚltimo

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. Caida de Watsapp y FB, o vuelta a la normalidad
    Por Kuk en el foro Espacio "Offtop"
    Respuestas: 3
    Último Mensaje: 05.10.2021, 18:39
  2. [Sintaxis] SqlServer Campo DateTime y Date
    Por Hrmcobol en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 2
    Último Mensaje: 26.05.2021, 12:45
  3. [Información] Estamos de vuelta de nuevo
    Por Kuk en el foro CobolForo.es
    Respuestas: 8
    Último Mensaje: 13.09.2018, 00:08
  4. [Información] Reducir tamaño campo
    Por Gatomalo en el foro RM/COBOL
    Respuestas: 4
    Último Mensaje: 24.11.2017, 05:30
  5. [Información] Tamaño de campo
    Por Josber en el foro PowerFORM
    Respuestas: 2
    Último Mensaje: 16.12.2015, 20:47

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •