Cómo: |
La función MNTGETTOK de Maintain divide la cadena de caracteres en subcadenas, denominadas tokens. Para poder usar MNTGETTOK, los datos deben tener un carácter específico, llamado delimitador, que aparezca en la cadena y la divida en tokens. MNTGETTOK devuelve el token especificado por el argumento token_number.
Por ejemplo, puede usar MNTGETTOK para extraer valores individuales de una lista, separados por puntos y coma, designando el punto y coma como delimitador.
Para usar esta función, debe importar la librería de funciones MNTUWS.
Nota:
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number)donde:
Alfanumérico
Es el campo que contiene la cadena de caracteres original o una cadena entre comillas simples o dobles.
Alfanumérico
Es el delimitador de la cadena principal, entre comillas simples o dobles. Si especifica más de un carácter, sólo se usa el primero. El delimitador no está incluido en el token.
Número entero
Es el número del token que se va a extraer. Si el argumento es positivo, los tokens se cuentan de izquierda a derecha. Si es negativo, se cuentan de derecha a izquierda. Por ejemplo, -2 extrae el segundo token empezando por la derecha. Si el argumento es 0, la función devuelve espacios.
MNTGETTOK extrae tokens de la cadena de caracteres de longitud variable SKILLSTRING, y almacena el resultado TOKENX. El delimitador es un espacio en blanco. El número de token está basado en el valor de la variable de contador i, que aumenta con cada paso por el bucle Repetir:
MAINTAIN MODULE IMPORT(MNTUWS) SKILLSTRING/A0="Typing Steno Filing Bkkping"; COMPUTE i/i2 = 1; TYPE "Job skills required are:" REPEAT 6 COMPUTE TOKENX/A0=MNTGETTOK(SKILLSTRING, ' ', i ); TYPE "<<TOKENX"; COMPUTE i = i+1; ENDREPEAT END
La salida es:
Job skills required are: Typing Steno Filing Bkkping
El siguiente procedimiento, basado en el origen de datos EMPLOYEE, recupera el segmento EMPINFO y la primera copia de ADDRESS_LN3 de cada empleado y, a continuación, extrae el último token (código postal) de ADDRESS_LN3:
MAINTAIN FILE EMPLOYEE MODULE IMPORT(MNTUWS) REPEAT ALL; NEXT EMP_ID INTO ESTACK IF FOCFETCH NE 0 THEN GOTO EXITREPEAT; NEXT ADDRESS_LN3 INTO ASTACK TYPE "<<ESTACK.FIRST_NAME <<ESTACK.LAST_NAME"; TYPE "<<ASTACK.ADDRESS_LN3"; COMPUTE ZIP/A0=MNTGETTOK(ASTACK.ADDRESS_LN3, " ", -1 ); TYPE "ZIP CODE IS: <<ZIP"; TYPE " "; ENDREPEAT END
La salida es:
ALFRED STEVENS
NEW YORK NY 10001
ZIP CODE IS: 10001
MARY SMITH
NEW YORK NY 10001
ZIP CODE IS: 10001
DIANE JONES
NEW YORK NY 10001
ZIP CODE IS: 10001
RICHARD SMITH
NEW YORK NY 10001
ZIP CODE IS: 10001
JOHN BANNING
FREEPORT NY 11520
ZIP CODE IS: 11520
JOAN IRVING
NEW YORK NY 10001
ZIP CODE IS: 10001
ANTHONY ROMANS
NEW YORK NY 10001
ZIP CODE IS: 10001
JOHN MCCOY
NEW YORK NY 10001
ZIP CODE IS: 10001
ROSEMARIE BLACKWOOD
NEW YORK NY 10001
ZIP CODE IS: 10001
ROGER MCKNIGHT
NEW YORK NY 10001
ZIP CODE IS: 10001
MARY GREENSPAN
NEW YORK NY 10001
ZIP CODE IS: 10001
BARBARA CROSS
NEW YORK NY 10001
ZIP CODE IS: 10001
| Information Builders |