Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Transformar letra Minúscula a Mayúscula


jmeza
9 de mayo de 2017, 05:19
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.
MOVE NOMBRE-MAS TO nombre
INSPECT NOMBRE CONVERTING "abcdefghijklmnñopqrstuvwxyz"
TO "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".
-mensaje de advertencia
01 OK PIC X(15).
01 STYL PIC S9(9) COMP-5.
01 M-TITLE PIC X(15) VALUE "Mensaje".
01 RET PIC S9(9) COMP-5.
PROCEDURE DIVISION.
INICIO.

if pow-text of cmtext13 = spaces
COMPUTE STYL = POW-DMOK + POW-DMNOICON
INVOKE POW-SELF "DisplayMessage"
USING "Cliente no esta registrado" M-TITLE STYL
RETURNING RET
* When the push button is clicked.
EVALUATE RET
WHEN POW-DMROK
exit program
END-EVALUATE.
ABRE.

Fito
9 de mayo de 2017, 22:02
Hola:

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


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

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATOS.
02 NOMBRE-MAS PIC X(27).
02 NOMBRE PIC X(27).
PROCEDURE DIVISION.
MOVE cmtext2 TO nombre
INSPECT NOMBRE CONVERTING "abcdefghijklmnñopqrstuvwxyz"
TO "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".

* esta tampoco funciona
* move cmtext2 upper-case (minuscula) to mayuscula.

move pow-true to enabled of cmtext3.
move pow-color-white to backcolor of cmtext3.
invoke cmtext3 "setfocus".

jotica
10 de mayo de 2017, 03:49
Para tu caso debes escribir
MOVE POW-TEXT OF Cmtext2 TO NOMBRE
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.


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 minuscula pic x(50).
01 mayuscula pic x(50).

PROCEDURE DIVISION.

comienzo.
move "abcdefgh" to minuscula.
move function upper-case(minuscula) to mayuscula.

*> la variable mayuscula se carga con ABCDEFGH.


Saludos.

Fito...

Roger
10 de mayo de 2017, 04:20
Juan

La sintaxis en powercobol es
MOVE POW-TEXT OF CMTEX1 TO CAMPO
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
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:
IF CAMPO-ALFABETICO EQUAL SPACES
INVOKE POW-SELF "DISPLAYMESSAGE" USING
"mensaje deseado"
"Identificador del mensaje "
Mesage-Style
RETURNING ReturnValue
INVOKE Cmtext1 "SetFocus"
EXIT PROGRAM
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