MNTGETTOK: Cómo extraer tokens de una función de cadenas

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:


Principio de página

x
Sintaxis: Cómo Extraer una subcadena (Token)
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number)

donde:

infield

Alfanumérico

Es el campo que contiene la cadena de caracteres original o una cadena entre comillas simples o dobles.

delim

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.

token_number

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.



Ejemplo: Cómo extraer tokens de una cadena

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                 


Ejemplo: Cómo extraer el código postal de una dirección

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