Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Transformar letra Minúscula a Mayúscula (https://www.cobolforo.es/showthread.php?t=625)

jmeza 9 de mayo de 2017 05:19

Transformar letra Minúscula a Mayúscula
 
Hola, me podrían ayudar estoy emigrando de rmcobol a pawercobol v9o

- Como transformo letra minúscula a mayúscula en un campo alfabético
- Como valido un campo alfabético que no este vació antes de grabar.
- Como valido un campo numérico que sea mayor que cero antes de grabar
- Como genero un mensaje de advertencia por algún dato que falte antes de grabar

Saludos

Roger 9 de mayo de 2017 16:39

Hola Juan
-convertir minuscula en mayuscula.
Código COBOL:
  1.  MOVE NOMBRE-MAS TO nombre
  2.             INSPECT NOMBRE CONVERTING "abcdefghijklmnñopqrstuvwxyz"
  3.            TO "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".
-mensaje de advertencia
Código COBOL:
  1.  01 OK PIC X(15).  
  2.  01  STYL    PIC S9(9) COMP-5.
  3.  01  M-TITLE PIC X(15) VALUE "Mensaje".
  4.  01  RET     PIC S9(9) COMP-5.  
  5.  PROCEDURE       DIVISION.
  6.  INICIO.
  7.          
  8.        if pow-text of cmtext13 = spaces  
  9.        COMPUTE STYL = POW-DMOK + POW-DMNOICON
  10.      INVOKE POW-SELF "DisplayMessage"
  11.          USING "Cliente no esta registrado" M-TITLE STYL
  12.          RETURNING RET
  13. * When the push button is clicked.
  14.      EVALUATE RET
  15.        WHEN POW-DMROK
  16.          exit program
  17.       END-EVALUATE.
  18.  ABRE.

Fito 9 de mayo de 2017 22:02

Hola:

Para pasar de minuscula a mayuscula podés usar una función:

Código COBOL:
  1.         move function upper-case(minuscula)   to mayuscula.

Saludos. Fito...

jmeza 10 de mayo de 2017 03:26

Hola Roger y Fito

La función enviada de convertir minuscula a MAYUSCULA, no logro hacerla que funcione
esta es la función de programación, de un campo alfabético.

Favor de revisar que esta malo

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 DATOS.
  5.     02 NOMBRE-MAS PIC X(27).
  6.     02 NOMBRE     PIC X(27).
  7.  PROCEDURE       DIVISION.
  8.       MOVE cmtext2 TO nombre
  9.                 INSPECT NOMBRE CONVERTING "abcdefghijklmnñopqrstuvwxyz"
  10.                         TO "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".
  11.  
  12. * esta tampoco funciona  
  13. *     move cmtext2 upper-case (minuscula) to mayuscula.
  14.  
  15.      move pow-true to enabled of cmtext3.
  16.      move pow-color-white to backcolor of cmtext3.
  17.      invoke  cmtext3 "setfocus".

jotica 10 de mayo de 2017 03:49

Para tu caso debes escribir
Código COBOL:
  1. MOVE POW-TEXT OF Cmtext2 TO NOMBRE
  2. MOVE FUNCTION UPPER-CASE (NOMBRE) TO NOMBRE-MAS


en NOMBRE estara en minuscula porque asi la debieron digitar en Cmtext2
Y en NOMBRE-MAS quedara el texto en mayuscula

Ahora si Cmtext2 es un control de tu form simplemente en las propiedades definalo como Upper y directamente estara en mayusculas asi lo digiten en minuscula

Fito 10 de mayo de 2017 03:53

Hola:

En el ejemplo que te hice "minuscula" y "mayuscula" son variables alfanuméricas.

Código COBOL:
  1. ENVIRONMENT DIVISION.
  2. DATA DIVISION.
  3. WORKING-STORAGE SECTION.
  4. 01  minuscula       pic x(50).
  5. 01  mayuscula       pic x(50).
  6.  
  7. PROCEDURE DIVISION.
  8.  
  9. comienzo.
  10.     move "abcdefgh"                     to minuscula.
  11.     move function upper-case(minuscula) to mayuscula.
  12.  
  13. *> la variable mayuscula se carga con ABCDEFGH.

Saludos.

Fito...

Roger 10 de mayo de 2017 04:20

Juan

La sintaxis en powercobol es
Código COBOL:
  1. MOVE POW-TEXT OF CMTEX1 TO CAMPO
  2.   MOVE POW-NUMERIC OF CMTEXT1 TO CAMPO
En el primer caso si es alfabetico.
el segundo si es númerico.

solo en el caso de mover blancos tanto en campo numericos y texto
Código COBOL:
  1. MOVE SPACES TO POW-TEXT OF CMTEXT1.

jotica 10 de mayo de 2017 20:09

Jmeza

Para tu necesidad 1a creo ya tienes varias respuestas, actualmente yo estoy usando la que te he enviado.
Para las otras necesidades tuyas lo que se hace es preguntar por el contenido del campo, si esta en espacios (caso alfabetico y/o alfamerico) o en zero (caso numerico) se envia un mensaje de error y finalizo el evento enviando el foco al respectivo campo.
Caso alfamerico:
Código COBOL:
  1. IF CAMPO-ALFABETICO EQUAL SPACES
  2.   INVOKE POW-SELF "DISPLAYMESSAGE" USING
  3.      "mensaje deseado"
  4.      "Identificador del mensaje "
  5.      Mesage-Style
  6.    RETURNING ReturnValue
  7.    INVOKE Cmtext1 "SetFocus"
  8.    EXIT PROGRAM
  9. END-IF

Para lo numerico se hace algo semejante, obviamente con el cambio coresponfiente.

Para mejor entendimiento del DISPLAYMESSAGE vea el manual de powerCOBOL

Espero le sirva de algo


La franja horaria es GMT +2. Ahora son las 14:39.

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