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
FPRINT(in_value, 'usageformat', output)
onde:
Qualquer formato, exceto TX
É o valor a ser convertido.
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.
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.
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
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
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
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 |