Ver la Versión Completa : [Sintaxis] Mayusculas en las primeras palabras
Gatomalo
16 de abril de 2015, 22:56
Nesecito poder hacer una rutina donde ingrese "juan jose del carpio sanchez" y me devuelva
"Juan Jose Del Carpio Sanchez"
Kuk
17 de abril de 2015, 09:01
gatomalo, aqui tienes un codigo COBOL normal y corriente que funcionaria en cualquier compilador:
WORKING-STORAGE SECTION.
01 MI-CAMPO PIC X(100).
PROCEDURE DIVISION.
MOVE 1 TO IDX-1
PERFORM UNTIL IDX-1 > 100
INSPECT MI-CAMPO(IDX-1) CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
PERFORM UNTIL MI-CAMPO(IDX-1) = SPACES OR IDX-1 = 100
ADD 1 TO IDX-1
END-PERFORM
ADD 1 TO IDX-1
END-PERFORM
Josber
17 de abril de 2015, 11:44
Aquí tienes otro, el de Kuk no lo he probado, por lo que no sé si tiene en cuenta el que haya más de 1 espacio entre dos palabras, en éste sí. Como el de Kuk, funciona perfectamente con cualquier COBOL.
WORKING-STORAGE SECTION.
01 TT1.
03 T1 PIC X OCCURS 100.
01 I PIC 999 COMP-3.
01 II PIC 999 COMP-3.
01 III PIC 999 COMP-3.
PROCEDURE DIVISION.
MOVE tu_variable TO TT1.
PERFORM VARYING I FROM 100 BY -1
UNTIL I = 1 OR T1 (I) NOT = SPACES
CONTINUE
END-PERFORM.
MOVE 0 TO II III.
PERFORM VARYING II FROM 1 BY 1 UNTIL II > I OR II = 100
IF T1 (II) = SPACES
COMPUTE III = II + 1
IF T1 (III) NOT = SPACES
INSPECT T1 (III) CONVERTING
"abcdefghijklmnñopqrstuvwxyz" TO
"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"
END-IF
END-IF
END-PERFORM.
Un saludo.-
Kuk
17 de abril de 2015, 13:29
Josber, el mio no lo tiene en cuenta. Habria que meterle otro bucle por medio, y asi lo tiene en cuenta:
WORKING-STORAGE SECTION.
01 MI-CAMPO PIC X(100).
PROCEDURE DIVISION.
MOVE 1 TO IDX-1
PERFORM UNTIL IDX-1 > 100
PERFORM UNTIL MI-CAMPO(IDX-1:1) NOT = SPACES OR IDX-1 > 100
ADD 1 TO IDX-1
END-PERFORM
IF IDX-1 NOT > 100
INSPECT MI-CAMPO(IDX-1:1) CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
PERFORM UNTIL MI-CAMPO(IDX-1:1) = SPACES OR IDX-1 > 100
ADD 1 TO IDX-1
END-PERFORM
END-IF
END-PERFORM
Gatomalo
17 de abril de 2015, 17:45
Josfer
En tu rutina la primera palabra no cambia ingreso "juan jose del carpio sanchez" devuelve
"juan Jose Del Carpio Sanchez" .
Kuk en tu rutina me bota error en ":" must be specified in the reference modifier .":" is assumed
Hrmcobol
17 de abril de 2015, 20:24
Hola GatoMalo, fijate que esto me parece que tambien anda en RM
Saludos
inspect CAMPO replacing all " a" by " A".
inspect CAMPO replacing all " b" by " B".
inspect CAMPO replacing all " c" by " C".
inspect CAMPO replacing all " d" by " D".
inspect CAMPO replacing all " e" by " E".
inspect CAMPO replacing all " f" by " F".
Añadido despues de 37 minutos
El ejemplo anterior no contempla la primer letra, agregar
INSPECT MI-CAMPO(IDX-1) CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Añadido despues de 43 minutos
No le tengo bien la mano a esta nueva manera de comunicarme, le erre en el codigo, reemplazar MI-CAMPO(IDX-1) POR CAMPO (01:01)
Disculpen
Gatomalo
17 de abril de 2015, 21:22
Agregue estos codigo y ya funciona
03 T1 PIC X OCCURS 100.
01 I PIC 999 COMP-3.
01 II PIC 999 COMP-3.
01 III PIC 999 COMP-3.
PROCEDURE DIVISION.
MOVE tu_variable TO TT1.
PERFORM VARYING I FROM 100 BY -1
UNTIL I = 1 OR T1 (I) NOT = SPACES
CONTINUE
END-PERFORM.
MOVE 0 TO II III.
PERFORM VARYING II FROM 1 BY 1 UNTIL II > I OR II = 100
IF T1 (II) = SPACES
COMPUTE III = II + 1
IF T1 (III) NOT = SPACES
INSPECT T1 (III) CONVERTING
"abcdefghijklmnñopqrstuvwxyz" TO
"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"
END-IF
END-IF
END-PERFORM.
INSPECT T1 (1) CONVERTING "abcdefghijklmnñopqrstuvwxyz" TO
"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".
Kuk
18 de abril de 2015, 00:31
Kuk en tu rutina me bota error en ":" must be specified in the reference modifier .":" is assumed
Ya lo he corregido, se me habia olvidado meter el ":1" ;)
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.