MNTGETTOK: Como Extrair Tokens de uma Função de String

Como:

A função Maintain MNTGETTOK divide uma string de caracteres em substrings, chamadas tokens. Para utilizar o MNTGETTOK, os dados devem incluir um caractere especial, chamado delimitador, ocorre na string e a divide em tokens. MNTGETTOK exibe o token especificado pelo argumento token_number.

Por exemplo, você pode utilizar MNTGETTOK para extrair valores individuais de uma lista separada por pontos-e-vírgulas designando o ponto-e-vírgula como delimitador.

Para utilizar esta função, você deve importar a biblioteca de funções MNTUWS.

Comunicado:


Topo da página

x
Sintaxe: Como Extrair uma substring (Token)
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number)

onde:

infield

Alfanumérico

É o campo contendo a string de caracteres original ou a string de caracteres entre aspas simples ou duplas.

delim

Alfanumérico

É o delimitador na string pai entre aspas simples ou duplas. Se especificar mais de um caractere, somente o primeiro caractere é usado". O delimitador não está incluído no token.

token_number

Inteiro

É o número do token a ser extraído. Se este argumento for positivo, os tokens serão contados da esquerda para a direita. Se este argumento for negativo, os tokens serão contados da direita para a esquerda. Por exemplo, -2 extrai o segundo token da direita. Se este argumento é 0, a função retorna espaços.



Exemplo: Como Extrair Tokens de uma String

MNTGETTOK extrai tokens da string de caracteres com comprimento variável SKILLSTRING e armazena o resultado na string de caracteres com comprimento variável TOKENX. O delimitador é um espaço em branco. O número do token é baseado no valor da variável de contador i, que aumenta com cada etapa através do loop 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

A saída é:

Job skills required are:
Typing                  
Steno                   
Filing                  
Bkkping                 


Exemplo: Como Extrair o Código postal de um Endereço

O procedimento a seguir na fonte de dados EMPLOYEE recupera o segmento EMPINFO e a primeira ocorrência de ADDRESS_LN3 para cada funcionário. Em seguida, extrai o ú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                                                       

A saída é:

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