MNTGETTOK: Estrazione di token dalla funzione di una stringa

Come:

La funzione Maintain MNTGETTOK divide una stringa di caratteri in una sottostringa, chiamata token. Per poter usare MNTGETTOK, i dati devono avere un carattere specifico, chiamato delimitatore, che avviene nella stringa e separa la stringa in token. MNTGETTOK restituisce il token specifico dall'argomento token_number.

Per esempio, è possibile usare MNTGETTOK per estrarre valori individuali da un elenco separato da punti e virgola, designando il punto e virgola come delimitatore.

Per usare questa funzione, è necessario importare la funzione libreria MNTUWS.

Nota:


Inizio pagina

x
Sintassi: Come estrarre una sottostringa (token)
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number)

dove:

infield

Alfanumerico

Il campo contenente la stringa di caratteri originale o una stringa di caratteri racchiusa tra virgolette singole o doppie.

delim

Alfanumerico

Il delimitatore nella stringa principale racchiuso tra virgolette singole o doppie. Se si specifica più di un carattere, è utilizzato solo il primo carattere". Il delimitatore non è incluso nel token.

token_number

Valore intero

Il numero del token da estrarre. Se questo argomento è positivo, i token sono contati da sinistra a destra. Se questo argomento è negativo, i token sono contati da destra a sinistra. Ad esempio, -2 estrae il secondo token dalla destra. Se questo argomento è 0, la funzione restituisce degli spazi.



Esempio: Estrazione di token da una stringa

MNTGETTOK estrae token dalla stringa di caratteri di lunghezza variabile SKILLSTRING e memorizza il risultato nella stringa di caratteri di lunghezza variabile TOKENX. Il delimitatore è uno spazio vuoto. Il numero token si basa sul valore della variabile counter i, che aumenta con ogni passaggio dal loop Ripeti:

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

L'emissione è:

Job skills required are:
Typing                  
Steno                   
Filing                  
Bkkping                 


Esempio: Estrazione del codice postale da un indirizzo

La seguente procedura rispetto all'origine dati EMPLOYEE recupera il segmento EMPINFO e la prima istanza di ADDRESS_LN3 per ogni dipendente, quindi estrae l'ultimo token (codice postale) da 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                                                       

L'emissione è:

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