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:
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number)
onde:
Alfanumérico
É o campo contendo a string de caracteres original ou a string de caracteres entre aspas simples ou duplas.
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.
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.
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
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 |