FPRINT: Cómo convertir campos al formato alfanumérico

Cómo:

Referencia:

La función FPRINT convierte cualquier tipo de campo, excepto los de texto, en su equivalente alfanumérico, para su visualización. La representación alfanumérica incluye cualquier opción de visualización especificada en el formato del campo original.

Lenguajes disponibles: informes


Principio de página

x
Sintaxis: Cómo Convertir campos utilizando FPRINT
FPRINT(in_value, 'usageformat', output)

donde:

in_value

Cualquier formato excepto TX

El valor que se va a convertir.

usageformat

Alfanumérico

Es el formato de uso del valor que se va a convertir, incluidas las opciones de visualización. El formato debe estar entre comillas simples.

output

Alfanumérico

Es el nombre del campo de salida o su formato entre comillas simples.

El formato de salida debe ser lo suficientemente largo para incluir el número convertido, con un signo y un punto decimal, además de cualquier carácter adicional generado por las opciones de visualización, como comas, un símbolo de divisa o un signo de porcentaje.

Por ejemplo, el formato D12.2 se convierte en A14, puesto que su salida presenta dos dígitos decimales, un punto decimal, posiblemente un signo menos, hasta ocho dígitos de número entero y dos comas. Si el formato de salida no es lo suficientemente largo, se truncan los caracteres sobrantes de la derecha.


Principio de página

x
Referencia: Notas de uso de la función FPRINT


Ejemplo: Cómo convertir campos numéricos al formato alfanumérico

La siguiente solicitud, basada en el origen de datos EMPLOYEE, utiliza FPRINT para convertir los campos CURR_SAL, ED_HRS y BANK_ACCT al formato alfanumérico y mostrarlos en la salida del informe. A continuación, la función STRREP reemplaza los espacios en blanco por asteriscos en la representación alfanumérica de CURR_SAL. CURR_SAL está en formato D12.2M, así que la representación alfanumérica aparece en formato A15. El campo ER_HRS está en formato F6.2, así que la representación alfanumérica aparece en formato A6. El campo BANK_ACCT está en formato I9S, así que la representación alfanumérica aparece en formato A9. Las representaciones alfanuméricas de los campos numéricos están justificadas a la derecha. Las opciones /R del comando PRINT hacen que los títulos de las columnas aparezcan justificados a la derecha sobre los 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

La salida es:

  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


Ejemplo: Cómo convertir campos de fecha alfanuméricos o numéricos al formato alfanumérico

La siguiente solicitud, basada en el origen de datos EMPLOYEE, convierte el campo HIRE_DATE al formato alfanumérico. Además, crea un campo de fecha alfanumérico llamado ADATE, y lo convierte en su representación alfanumérica. Puesto que el campo HIRE_DATE está en el formato I6YMD y ADATE, en A6YMD, las representaciones alfanuméricas aparecen en el formato A8 para acomodar las barras diagonales entre los componentes de fecha. La opción /R justifica a la derecha los títulos de las columnas sobre los valores de los campos:

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

La salida es:

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


Ejemplo: Cómo convertir un campo de fecha al formato alfanumérico

La siguiente solicitud, basada en el origen de datos VIDEOTRK, convierte el campo TRANSDATE (YMD) al formato alfanumérico. La representación alfanumérica está en formato A8 para acomodar las barras diagonales entre los componentes de fecha:

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

La salida es:

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


Ejemplo: Cómo convertir un campo de fecha-hora al formato alfanumérico y crear un archivo HOLD

La siguiente solicitud, basada en el origen de datos VIDEOTR2, convierte el campo TRANSDATE (HYYMDI) al formato alfanumérico. La representación alfanumérica está en el formato A16 para acomodar un año de dos dígitos, un mes y un día con dos dígitos cada uno, dos barras diagonales entre los componentes de fecha, un espacio entre la fecha y la hora, una hora de dos dígitos, un punto y coma entre los componentes de hora y minuto y un minuto de dos 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

La salida es:

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

Si mantiene la salida en un archivo delimitado por comas u otro tipo de archivo de salida alfanumérica, podrá observar que, mientras el campo original sólo propaga la representación numérica del valor, el campo convertido sí propaga, en cambio, las opciones de visualización:

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

Aparece el archivo HOLD. El primer campo representa los datos originales; el segundo contiene los valores convertidos con opciones de visualización:

"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"

WebFOCUS