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 biblioteca 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
WebFOCUS |