COBOL - Manejo de cadenas
Las sentencias de manejo de cadenas en COBOL se utilizan para realizar múltiples operaciones funcionales en cadenas. A continuación se muestran las declaraciones de manejo de cadenas:
- Inspect
- String
- Unstring
Inspeccionar
El verbo inspeccionar se usa para contar o reemplazar los caracteres en una cadena. Las operaciones de cadena se pueden realizar en valores alfanuméricos, numéricos o alfabéticos. Las operaciones de inspección se realizan de izquierda a derecha. Las opciones utilizadas para las operaciones de cadena son las siguientes:
Contando
La opción de conteo se usa para contar los caracteres de la cadena.
Syntax
A continuación se muestra la sintaxis de la opción Tallying:
INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS
Los parámetros utilizados son:
- input-string: la cadena cuyos caracteres se van a contar.
- output-count: elemento de datos para contener el recuento de caracteres.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CNT1 PIC 9(2) VALUE 0.
01 WS-CNT2 PIC 9(2) VALUE 0.
01 WS-STRING PIC X(15) VALUE 'ABCDACDADEAAAFF'.
PROCEDURE DIVISION.
INSPECT WS-STRING TALLYING WS-CNT1 FOR CHARACTER.
DISPLAY "WS-CNT1 : "WS-CNT1.
INSPECT WS-STRING TALLYING WS-CNT2 FOR ALL 'A'.
DISPLAY "WS-CNT2 : "WS-CNT2
STOP RUN.
JCL para ejecutar el programa COBOL anterior.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-CNT1 : 15
WS-CNT2 : 06
Reemplazo
La opción de reemplazo se usa para reemplazar los caracteres de cadena.
Syntax
A continuación se muestra la sintaxis de la opción Reemplazo:
INSPECT input-string REPLACING ALL char1 BY char2.
El parámetro utilizado es -
input-string - La cadena cuyos caracteres se reemplazarán de char1 a char2.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC X(15) VALUE 'ABCDACDADEAAAFF'.
PROCEDURE DIVISION.
DISPLAY "OLD STRING : "WS-STRING.
INSPECT WS-STRING REPLACING ALL 'A' BY 'X'.
DISPLAY "NEW STRING : "WS-STRING.
STOP RUN.
JCL para ejecutar el programa COBOL anterior.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
OLD STRING : ABCDACDADEAAAFF
NEW STRING : XBCDXCDXDEXXXFF
Cuerda
El verbo de cadena se usa para concatenar las cadenas. Con la instrucción STRING, se pueden combinar dos o más cadenas de caracteres para formar una cadena más larga. La cláusula 'Delimitado por' es obligatoria.
Syntax
A continuación se muestra la sintaxis del verbo String:
STRING ws-string1 DELIMITED BY SPACE
ws-string2 DELIMITED BY SIZE
INTO ws-destination-string
WITH POINTER ws-count
ON OVERFLOW DISPLAY message1
NOT ON OVERFLOW DISPLAY message2
END-STRING.
A continuación se muestran los detalles de los parámetros utilizados:
- ws-string1 y ws-string2: cadenas de entrada para concatenar
- ws-string: Cadena de salida
- ws-count: se usa para contar la longitud de una nueva cadena concatenada
- Delimitado especifica el final de la cadena
- El puntero y el desbordamiento son opcionales
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC A(30).
01 WS-STR1 PIC A(15) VALUE 'Tutorialspoint'.
01 WS-STR2 PIC A(7) VALUE 'Welcome'.
01 WS-STR3 PIC A(7) VALUE 'To AND'.
01 WS-COUNT PIC 99 VALUE 1.
PROCEDURE DIVISION.
STRING WS-STR2 DELIMITED BY SIZE
WS-STR3 DELIMITED BY SPACE
WS-STR1 DELIMITED BY SIZE
INTO WS-STRING
WITH POINTER WS-COUNT
ON OVERFLOW DISPLAY 'OVERFLOW!'
END-STRING.
DISPLAY 'WS-STRING : 'WS-STRING.
DISPLAY 'WS-COUNT : 'WS-COUNT.
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-STRING : WelcomeToTutorialspoint
WS-COUNT : 25
Desencadenado
El verbo sin cadena se usa para dividir una cadena en múltiples subcadenas. La cláusula delimitada por es obligatoria.
Syntax
A continuación se muestra la sintaxis del verbo Unstring:
UNSTRING ws-string DELIMITED BY SPACE
INTO ws-str1, ws-str2
WITH POINTER ws-count
ON OVERFLOW DISPLAY message
NOT ON OVERFLOW DISPLAY message
END-UNSTRING.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC A(30) VALUE 'WELCOME TO TUTORIALSPOINT'.
01 WS-STR1 PIC A(7).
01 WS-STR2 PIC A(2).
01 WS-STR3 PIC A(15).
01 WS-COUNT PIC 99 VALUE 1.
PROCEDURE DIVISION.
UNSTRING WS-STRING DELIMITED BY SPACE
INTO WS-STR1, WS-STR2, WS-STR3
END-UNSTRING.
DISPLAY 'WS-STR1 : 'WS-STR1.
DISPLAY 'WS-STR2 : 'WS-STR2.
DISPLAY 'WS-STR3 : 'WS-STR3.
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-STR1 : WELCOME
WS-STR2 : TO
WS-STR3 : TUTORIALSPOINT