Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   RM/COBOL (https://www.cobolforo.es/forumdisplay.php?f=16)
-   -   [Duda] Reducir tamaño campo (https://www.cobolforo.es/showthread.php?t=766)

Gatomalo 20 de noviembre de 2017 21:19

Reducir tamaño campo
 
Bueno siguiendo la politica del foro

Código COBOL:
  1.  01 DATOS-DET.
  2.      02 MED-ITEM PIC X(3).
  3.      02 FILLER PIC X VALUE ",".
  4.      02 CANT PIC ZZZ,ZZ9.99.
  5.       02 FILLER PIC X VALUE ",".
  6.      02 COD-PROD PIC ZZZ,ZZ9.99.
  7.       02 FILLER PIC X VALUE ",".

este codigo se registra como "NUI, 10.15, 105.30".
para que se ponga de esta manera "NUI,10.15,105.30".

compilador rmcobolv7

Fito 21 de noviembre de 2017 14:52

Hola:

A lo mejor hay una mejor manera, pero ahora se me ocurre hacer un bucle con un inspect reemplazando ", " por "," hasta que no haya más nada que reemplazar...

Saludos.

Fito...

Joseg 21 de noviembre de 2017 15:34

Cita:

Citación del post de Gatomalo (Mensaje 3723)
Bueno siguiendo la politica del foro

Código COBOL:
  1.  01 DATOS-DET.
  2.      02 MED-ITEM PIC X(3).
  3.      02 FILLER PIC X VALUE ",".
  4.      02 CANT PIC ZZZ,ZZ9.99.
  5.       02 FILLER PIC X VALUE ",".
  6.      02 COD-PROD PIC ZZZ,ZZ9.99.
  7.       02 FILLER PIC X VALUE ",".

este codigo se registra como "NUI, 10.15, 105.30".
para que se ponga de esta manera "NUI,10.15,105.30".

compilador rmcobolv7



Tirar os espaços de uma string:

Código COBOL:
  1.  working-storage section.
  2.  01  source-field    pic x(100).
  3.  01  source-index    pic 9(004).
  4.  01  source-size     pic 9(004) value 999.
  5.        
  6.  01  target-field    pic x(100).
  7.  01  target-index    pic 9(004).
  8.  
  9.  procedure division.
  10.  move 100 to source-index              *> (depende do tamanos máximo da string)
  11.  move "NUI,    10.15,   105.30"  to source-field
  12.  perform remove-spaces

target-field fica = a "NUI,10.15,105.30"

Código COBOL:
  1.  remove-space.
  2.           move spaces to target-field.
  3.            move zeroes to target-index
  4.            perform varying source-index from 1 by 1
  5.                    until source-index > source-size
  6.                if source-field(source-index:1) > space
  7.                   add 1 to target-index
  8.                   move source-field(source-index:1) to
  9.                        target-field(target-index:1)
  10.                end-if
  11.           end-perform.

Eslopes 24 de noviembre de 2017 03:30

Código COBOL:
  1. 01 DATOS-DET.
  2.      02 MED-ITEM PIC X(3).
  3.      02 FILLER PIC X VALUE ",".
  4.      02 CANT PIC ZZZ,ZZ9.99.
  5.       02 FILLER PIC X VALUE ",".
  6.      02 COD-PROD PIC ZZZ,ZZ9.99.
  7.       02 FILLER PIC X VALUE ",".
  8. 01 resultado pic x(50).
  9.  
  10.  
  11. procedure division.
  12.  
  13.     string MED-ITEM ", " CANT  ", " COD-PROD ", " delimited all by spaces into  resultado
  14.  
  15.     display resultado

algo assim...estou ficando velho, posso ter esquecido a sintaxe correta

Saludos, Emerson

Gatomalo 24 de noviembre de 2017 04:30

eso faltaba gracias :dart:


La franja horaria es GMT +2. Ahora son las 01:36.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.