FPRINT: Como Converter Campos em Formato Alfanumérico

Como:

Referência:

A função FPRINT converte qualquer tipo de campo, exceto um campo de texto em seu equivalente alfanumérico para exibição. A representação alfanumérica incluirá qualquer opção de exibição especificada no formato do campo original.

Linguagens Disponíveis: Reporting


Topo da página

x
Sintaxe: Como Converter Campos Utilizando FPRINT
FPRINT(in_value, 'usageformat', output)

onde:

in_value

Qualquer formato, exceto TX

É o valor a ser convertido.

usageformat

Alfanumérico

É o formato de uso do valor a ser convertido, incluindo as opções de exibição. O formato deve estar entre aspas simples.

saída

Alfanumérico

É o nome do campo de saída ou seu formato entre aspas simples.

O comprimento do formato da saída deve ser suficiente para acomodar o número, com um sinal e um ponto decimal, além de caracteres adicionais gerados pelas opções de exibição, como vírgulas, símbolo de moeda ou de porcentagem.

Por exemplo, o formato D12.2 é convertido em A14, pois a sua saída possui dois dígitos decimais, um ponto decimal, um possível sinal negativo, até oito dígitos inteiros e duas vírgulas. Se o formato de saída não for longo o suficiente, caracteres à direita podem ser truncados.


Topo da página

x
Referência: Observações sobre o Uso para a Função FPRINT


Exemplo: Como Converter Campos Numéricos em Formato Alfanumérico

A solicitação a seguir em relação à fonte de dados EMPLOYEE utiliza FPRINT para converter os campos CURR_SAL, ED_HRS e BANK_ACCT em alfanuméricos para exibição na saída do relatório. Em seguida, a função STRREP substitui os espaços em branco na representação alfanumérica de CURR_SAL por asteriscos. CURR_SAL possui o formato D12.2M, portanto, a representação alfanumérica tem o formato A15. O campo ED_HRS possui o formato F6.2, portanto, a representação alfanumérica possui o formato A6. O campo BANK_ACCT possui o formato I9S, portanto, a representação alfanumérica possui o formato A9. As representações alfanuméricas dos campos numéricos são justificadas à direita. As opções /R no comando PRINT fazem com que os títulos de coluna sejam justificados à direita nos valores:

DEFINE FILE EMPLOYEE
ASAL/A15 = FPRINT(CURR_SAL, 'D12.2M', ASAL);
ASAL/A15 = STRREP(15, ASAL, 1, ' ', 1, '*', 15, ASAL);
AED/A6 = FPRINT(ED_HRS, 'F6.2', AED);
ABANK/A9 = FPRINT(BANK_ACCT, 'I9S', ABANK);
END
TABLE FILE EMPLOYEE 
PRINT CURR_SAL ASAL
ED_HRS AED/R
BANK_ACCT ABANK/R
WHERE BANK_NAME NE ' '
ON TABLE SET PAGE NOPAGE
END

A saída é:

  CURR_SAL  ASAL             ED_HRS     AED  BANK_ACCT      ABANK
  --------  ----             ------  ------  ---------  ---------
$18,480.00  *****$18,480.00   50.00   50.00   40950036   40950036
$29,700.00  *****$29,700.00     .00     .00     160633     160633
$26,862.00  *****$26,862.00   30.00   30.00  819000702  819000702
$21,780.00  *****$21,780.00   75.00   75.00  122850108  122850108
$16,100.00  *****$16,100.00   50.00   50.00  136500120  136500120
$27,062.00  *****$27,062.00   45.00   45.00  163800144  163800144


Exemplo: Como Converter Campos de Data Alfanuméricas e numéricas em Formato Alfanumérico

A solicitação a seguir em relação à fonte de dados EMPLOYEE converte o campo HIRE_DATE no formato alfanumérico. Além disso, cria um campo de data alfanumérica com o nome ADATE e converte-o em sua representação alfanumérica. O campo HIRE_DATE possui o formato I6YMD e o campo ADATE possui o formato A6YMD, portanto, suas representações alfanuméricas possuem o formato A8 para acomodar as barras entre os componentes de data. A opção /R justifica à direita os títulos de coluna nos valores de campo:

DEFINE FILE EMPLOYEE 
AHDATE/A8 = FPRINT(HIRE_DATE,'I6YMD', AHDATE);
ADATE/A6YMD = EDIT(HIRE_DATE);
AADATE/A8 = FPRINT(ADATE,'A6YMD', AADATE);
END
TABLE FILE EMPLOYEE
PRINT HIRE_DATE AHDATE/R 
ADATE AADATE/R
ON TABLE SET PAGE NOPAGE
END

A saída é:

HIRE_DATE    AHDATE  ADATE       AADATE
---------  --------  -----     --------
 80/06/02  80/06/02  80/06/02  80/06/02
 81/07/01  81/07/01  81/07/01  81/07/01
 82/05/01  82/05/01  82/05/01  82/05/01
 82/01/04  82/01/04  82/01/04  82/01/04
 82/08/01  82/08/01  82/08/01  82/08/01
 82/01/04  82/01/04  82/01/04  82/01/04
 82/07/01  82/07/01  82/07/01  82/07/01
 81/07/01  81/07/01  81/07/01  81/07/01
 82/04/01  82/04/01  82/04/01  82/04/01
 82/02/02  82/02/02  82/02/02  82/02/02
 82/04/01  82/04/01  82/04/01  82/04/01
 81/11/02  81/11/02  81/11/02  81/11/02


Exemplo: Como Converter um Campo Data para o Formato Alfanumérico

A solicitação a seguir em relação à fonte de dados VIDEOTRK converte o campo TRANSDAT (YMD) em formato alfanumérico. A representação alfanumérica possui formato A8 para acomodar as barras entre os componentes de data:

DEFINE FILE VIDEOTRK
ALPHA_DATE/A8  = FPRINT(TRANSDATE,'YMD', ALPHA_DATE);
END 
TABLE FILE VIDEOTRK
PRINT TRANSDATE ALPHA_DATE
WHERE TRANSDATE LE '91/06/20'
ON TABLE SET PAGE NOPAGE 
END

A saída é:

TRANSDATE  ALPHA_DATE
---------  ----------
91/06/19   91/06/19
91/06/17   91/06/17
91/06/20   91/06/20
91/06/19   91/06/19
91/06/18   91/06/18
91/06/17   91/06/17
91/06/17   91/06/17
91/06/17   91/06/17
91/06/20   91/06/20
91/06/19   91/06/19
91/06/18   91/06/18
91/06/19   91/06/19
91/06/18   91/06/18
91/06/20   91/06/20
91/06/18   91/06/18
91/06/20   91/06/20
91/06/19   91/06/19
91/06/17   91/06/17


Exemplo: Como Converter um Campo Data-Hora para o Formato Alfanumérico e Criar um Arquivo HOLD

A solicitação a seguir em relação à fonte de dados VIDEOTRK2converte o campo TRANSDATE (HYMDI) em formato alfanumérico. A representação alfanumérica possui o formato A16 para acomodar um ano de quatro dígitos, um mês de dois dígitos, um dia de dois dígitos, duas barras entre os componentes de data, um espaço entre a data e a hora, uma hora de dois dígitos, dois pontos entre os componentes de hora e minuto e um minuto com dois dígitos:

DEFINE FILE VIDEOTR2 
DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
ALPHA_DATE/A16 = FPRINT(TRANSDATE,'HYYMDI', ALPHA_DATE);
END
TABLE FILE VIDEOTR2
PRINT TRANSDATE ALPHA_DATE/R
WHERE DATE EQ '1991'
ON TABLE SET PAGE NOPAGE
END

A saída é:

TRANSDATE               ALPHA_DATE
---------         ----------------
1991/06/27 02:45  1991/06/27 02:45
1991/06/20 05:15  1991/06/20 05:15
1991/06/21 07:11  1991/06/21 07:11
1991/06/21 01:10  1991/06/21 01:10
1991/06/19 07:18  1991/06/19 07:18
1991/06/19 04:11  1991/06/19 04:11
1991/06/25 01:19  1991/06/25 01:19
1991/06/24 04:43  1991/06/24 04:43
1991/06/24 02:08  1991/06/24 02:08
1991/06/25 01:17  1991/06/25 01:17
1991/06/27 01:17  1991/06/27 01:17
1991/11/17 11:28  1991/11/17 11:28
1991/06/24 10:27  1991/06/24 10:27

Se você mantiver a saída em um arquivo de saída delimitado por vírgulas ou outro alfanumérico, é possível ver que, enquanto o campo original propaga apenas a representação numérica do valor, o campo convertido propaga as opções de exibição também:

DEFINE FILE VIDEOTR2 
DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
ALPHA_DATE/A16 = FPRINT(TRANSDATE,'HYYMDI', ALPHA_DATE);
END 
TABLE FILE VIDEOTR2
PRINT TRANSDATE ALPHA_DATE/R
WHERE DATE EQ '1991'
ON TABLE HOLD FORMAT COMMA
END

O arquivo HOLD segue. O primeiro campo representa os dados originais, e o segundo contém os valores convertidos com as opções de exibição:

"19910627024500000","1991/06/27 02:45"
"19910620051500000","1991/06/20 05:15"
"19910621071100000","1991/06/21 07:11"
"19910621011000000","1991/06/21 01:10"
"19910619071800000","1991/06/19 07:18"
"19910619041100000","1991/06/19 04:11"
"19910625011900000","1991/06/25 01:19"
"19910624044300000","1991/06/24 04:43"
"19910624020800000","1991/06/24 02:08"
"19910625011700000","1991/06/25 01:17"
"19910627011700000","1991/06/27 01:17"
"19911117112800000","1991/11/17 11:28"
"19910624102700000","1991/06/24 10:27"

Information Builders