/*
 * $Id: binnum.txt 9312 2008-09-05 00:08:34Z vszakats $
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2000 Alejandro de Grate <alex_degarate@hotmail.com>
 * Documentacin en Espaol de:
 *    BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
 *    W2BIN(), L2BIN(), U2BIN()
 *
 * Copyright 2000 Chen Kedem <niki@actcom.co.il>
 * Documentacin en Ingls de: BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
 *                             W2BIN(), L2BIN(), U2BIN()
 *
 * Vea doc/license.txt por los trminos de la licencia.
 *
 */

/*  $DOC$
 *  $FUNCNAME$
 *      BIN2W()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte 2 bytes de un entero corto sin signo en un nmero
 *  $SYNTAX$
 *      BIN2W( <cBuffer> ) --> nNumero
 *  $ARGUMENTS$
 *      <cBuffer> es una cadena de caracteres que contiene un entero corto
 *                sin signo codificado en 16 bits (byte menos significativo
 *                primero). Los primeros dos bytes son tenidos en cuenta,
 *                si hay ms son ignorados.
 *  $RETURNS$
 *      BIN2W() retorna un nmero entero ( cero si <cBuffer> no es una
 *      cadena).
 *  $DESCRIPTION$
 *      BIN2W() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      BIN2W() toma dos bytes de un entero corto sin signo codificado en 16
 *      bits y los convierte en un valor numrico estandar de Harbour.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambin una forma til de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      BIN2W() es la inversa de W2BIN()
 *  $EXAMPLES$
 *      <fixed>
 *      // Muestra la longitud de la cabecera de un DBF
 *      FUNCTION main()
 *      LOCAL nHandle, cBuffer := SPACE( 2 )
 *      nHandle := FOPEN( "test.dbf" )
 *
 *      IF nHandle > 0
 *         FSEEK( nHandle, 8 )
 *         FREAD( nHandle, @cBuffer, 2 )
 *         ? "Longitud de la cabecera del DBF en bytes:", BIN2W( cBuffer )
 *         FCLOSE( nHandle )
 *      ELSE
 *         ? "No puedo abrir el archivo..."
 *      ENDIF
 *      RETURN NIL
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      BIN2W() funciona exactamente como la funcin de CA-Cl*pper, BIN2W()
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2U(),I2BIN(),W2BIN(),WORD()*,U2BIN(),FREAD()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      BIN2I()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte 2 bytes de un entero con signo en un nmero en Harbour
 *  $SYNTAX$
 *      BIN2I( <cBuffer> ) --> nNumero
 *  $ARGUMENTS$
 *      <cBuffer> es una cadena de caracteres que contiene un entero corto
 *                con signo codificado en 16 bits (byte menos significativo
 *                primero). Los primeros dos bytes son tenidos en cuenta,
 *                si hay ms son ignorados.
 *  $RETURNS$
 *      BIN2I() retorna un nmero entero ( cero si <cBuffer> no es una
 *      cadena).
 *  $DESCRIPTION$
 *      BIN2I() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      BIN2I() toma dos bytes de un entero corto con signo codificado en 16
 *      bits y los convierte en un valor numrico estndar de Harbour.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma til de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      BIN2I() es la inversa de I2BIN()
 *  $EXAMPLES$
 *      <fixed>
 *      // Muestra la fecha de la ltima actualizacin del DBF
 *      FUNCTION main()
 *      LOCAL nHandle, cAno, cMes, cDia
 *      nHandle := FOPEN( "test.dbf" )
 *
 *      IF nHandle > 0
 *         FSEEK( nHandle, 1 )
 *         cAno := cMes := cDia := " "
 *         FREAD( nHandle, @cAno, 1 )
 *         FREAD( nHandle, @cMes, 1 )
 *         FREAD( nHandle, @cDia, 1 )
 *         ? "Fecha de actualizacin:", BIN2I( cAno ), BIN2I( cMes ), ;
 *                                      BIN2I( cDia )
 *         FCLOSE( nHandle )
 *      ELSE
 *         ? "No puedo abrir el archivo..."
 *      ENDIF
 *
 *      RETURN NIL
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      BIN2I() funciona exactamente como la funcin de CA-Cl*pper, BIN2I()
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2L(),BIN2U(),BIN2W(),I2BIN(),W2BIN(),WORD()*,U2BIN(),FREAD()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      BIN2L()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte 4 bytes de un entero largo con signo en un nmero
 *  $SYNTAX$
 *      BIN2L( <cBuffer> ) --> nNumero
 *  $ARGUMENTS$
 *      <cBuffer> es una cadena de caracteres que contiene un entero largo
 *                con signo codificado en 32 bits (byte menos significativo
 *                primero). Los primeros cuatro bytes son tenidos en cuenta,
 *                si hay ms son ignorados.
 *  $RETURNS$
 *      BIN2L() retorna un nmero entero ( cero si <cBuffer> no es una
 *      cadena).
 *  $DESCRIPTION$
 *      BIN2L() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      BIN2L() toma cuatro bytes de un entero largo con signo codificado en
 *      32 bits y los convierte en un valor numrico estndar de Harbour.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma til de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      BIN2L() es la inversa de L2BIN()
 *  $EXAMPLES$
 *      <fixed>
 *      // Muestra el nmero de registros en el DBF
 *      FUNCTION main()
 *      LOCAL nHandle, cBuffer := SPACE( 4 )
 *      nHandle := FOPEN( "test.dbf" )
 *
 *      IF nHandle > 0
 *         FSEEK( nHandle, 4 )
 *         FREAD( nHandle, @cBuffer, 4 )
 *         ? "nmero de registros en el archivo:", BIN2L( cBuffer )
 *         FCLOSE( nHandle )
 *      ELSE
 *         ? "No puedo abrir el archivo..."
 *      ENDIF
 *
 *      RETURN NIL
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      BIN2L() funciona exactamente como la funcin de CA-Cl*pper, BIN2L()
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2U(),BIN2W(),I2BIN(),L2BIN(),W2BIN(),WORD()*,U2BIN()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      BIN2U()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte 4 bytes de un entero largo sin signo en un nmero
 *  $SYNTAX$
 *      BIN2U( <cBuffer> ) --> nNumero
 *  $ARGUMENTS$
 *      <cBuffer> es una cadena de caracteres que contiene un entero largo
 *                sin signo codificado en 32 bits (byte menos significativo
 *                primero). Los primeros cuatro bytes son tenidos en cuenta,
 *                si hay ms son ignorados.
 *  $RETURNS$
 *      BIN2U() retorna un nmero entero ( cero si <cBuffer> no es una
 *      cadena).
 *  $DESCRIPTION$
 *      BIN2U() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      BIN2U() toma cuatro bytes de un entero largo sin signo codificado en
 *      32 bits y los convierte en un valor numrico estndar de Harbour.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma util de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      BIN2U() es la inversa de U2BIN()
 *  $EXAMPLES$
 *      <fixed>
 *      // Muestra el nmero de registros en el DBF
 *      FUNCTION main()
 *      LOCAL nHandle, cBuffer := SPACE( 4 )
 *      nHandle := FOPEN( "test.dbf" )
 *
 *      IF nHandle > 0
 *         FSEEK( nHandle, 4 )
 *         FREAD( nHandle, @cBuffer, 4 )
 *         ? "Nmero de registros en el archivo:", BIN2U( cBuffer )
 *         FCLOSE( nHandle )
 *      ELSE
 *         ? "No puedo abrir el archivo..."
 *      ENDIF
 *
 *      RETURN NIL
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      BIN2U() es una funcin de compatibilidad con XBase++ y no existe como
 *      una funcin estndar en CA-Cl*pper 5.x
 *      Esta funcin es solamente visible si el archivo source/rtl/binnum.c
 *      fue compilado con la bandera HB_COMPAT_XPP.
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2W(),I2BIN(),W2BIN(),WORD()*,U2BIN(),FREAD()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      I2BIN()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte un nmero en 2 bytes de un entero corto con signo.
 *  $SYNTAX$
 *      I2BIN( <nNumero> ) --> cBuffer
 *  $ARGUMENTS$
 *      <nNumero> es un valor numrico a convertir (los digitos decimales
 *                son ignorados).
 *  $RETURNS$
 *      I2BIN() retorna una cadena de caracteres de dos bytes que
 *      contienen un entero corto con signo, codificado en 16 bits (byte
 *      menos significativo primero).
 *  $DESCRIPTION$
 *      I2BIN() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      I2BIN() toma un valor numrico y lo convierte en dos bytes de
 *      un entero corto con signo, codificado en 16 bits.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma util de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      I2BIN() es la inversa de BIN2I()
 *  $EXAMPLES$
 *      <fixed>
 *      // El ejemplo cambia la "fecha de ultima actualizacin" del DBF
 *      #include "fileio.ch"
 *      FUNCTION main()
 *      LOCAL nHandle, cAno, cMes, cDia
 *
 *      USE test
 *      ? "La fecha original de actualizacin es:", LUPDATE()
 *      CLOSE
 *      nHandle := FOPEN( "test.dbf", FO_READWRITE )
 *
 *      IF nHandle > 0
 *         FSEEK( nHandle, 1, )
 *         cAno := I2BIN( 68 )
 *         cMes := I2BIN(  8 )
 *         cDia := I2BIN(  1 )
 *         FWRITE( nHandle, cAno , 1 )   // escribe solo el primer byte
 *         FWRITE( nHandle, cMes, 1 )
 *         FWRITE( nHandle, cDia, 1 )
 *         FCLOSE( nHandle )
 *         USE test
 *         ? "La nueva fecha de actualizacin es:", LUPDATE()
 *         CLOSE
 *      ELSE
 *         ? "No puedo abrir el archivo..."
 *      ENDIF
 *
 *      RETURN NIL
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      I2BIN() funciona exactamente como la funcin de CA-Cl*pper, I2BIN()
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2U(),BIN2W(),W2BIN(),WORD()*,U2BIN(),FWRITE()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      W2BIN()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte un nmero en 2 bytes de un entero corto sin signo
 *  $SYNTAX$
 *      W2BIN( <nNumero> ) --> cBuffer
 *  $ARGUMENTS$
 *      <nNumero> es un valor numrico a convertir (los digitos decimales
 *                son ignorados).
 *  $RETURNS$
 *      W2BIN() retorna una cadena de caracteres de dos bytes que
 *      contienen un entero corto sin signo, codificado en 16 bits (byte
 *      menos significativo primero).
 *  $DESCRIPTION$
 *      W2BIN() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      W2BIN() toma un valor numrico y lo convierte en dos bytes de
 *      un entero corto sin signo, codificado en 16 bits.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma util de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      W2BIN() es la inversa de BIN2W()
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      W2BIN() es una funcin de compatibilidad con XBase++ y no existe como
 *      una funcin estandar en CA-Cl*pper 5.x
 *      Esta funcin es solamente visible si el archivo source/rtl/binnum.c
 *      fue compilado con la bandera HB_COMPAT_XPP.
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2U(),BIN2W(),I2BIN(),WORD()*,U2BIN(),FWRITE()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      L2BIN()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte un nmero en 4 bytes de un entero largo con signo
 *  $SYNTAX$
 *      L2BIN( <nNumero> ) --> cBuffer
 *  $ARGUMENTS$
 *      <nNumero> es un valor numrico a convertir (los digitos decimales
 *      son ignorados).
 *  $RETURNS$
 *      L2BIN() retorna una cadena de caracteres de cuatro bytes que
 *      contienen un entero largo con signo, codificado en 32 bits (byte
 *      menos significativo primero).
 *  $DESCRIPTION$
 *      L2BIN() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      L2BIN() toma un valor numrico y lo convierte en cuatro bytes de
 *      un entero largo con signo, codificado en 32 bits.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma til de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      L2BIN() es la inversa de BIN2L()
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      L2BIN() funciona exactamente como la funcin de CA-Cl*pper, L2BIN()
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2U(),BIN2L(),W2BIN(),WORD()*,U2BIN(),FWRITE()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      U2BIN()
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte un nmero en 4 bytes de un entero largo sin signo
 *  $SYNTAX$
 *      U2BIN( <nNumero> ) --> cBuffer
 *  $ARGUMENTS$
 *      <nNumero> es un valor numrico a convertir (los digitos decimales
 *                son ignorados).
 *  $RETURNS$
 *      U2BIN() retorna una cadena de caracteres de cuatro bytes que
 *      contienen un entero largo sin signo, codificado en 32 bits (byte
 *      menos significativo primero).
 *  $DESCRIPTION$
 *      U2BIN() es una de las funciones de conversin binaria, de bajo nivel.
 *      Estas funciones convierten entre un valor numrico en Harbour y una
 *      representacin de cadena de un valor numrico dado.
 *      U2BIN() toma un valor numrico y lo convierte en cuatro bytes de
 *      un entero largo sin signo, codificado en 32 bits.
 *
 *      Ud podra preguntarse cual es la necesidad de este tipo de funciones,
 *      bueno, primero de todo esta permite leer/escribir informacin desde/
 *      hacia un archivo binario (como extraer informacin de la cabecera de
 *      un archivo DBF), es tambien una forma til de compartir informacin
 *      desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
 *      U2BIN() es la inversa de BIN2U()
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      U2BIN() es una funcin de compatibilidad con XBase++ y no existe como
 *      una funcin estndar en CA-Cl*pper 5.x
 *      Esta funcin es solamente visible si el archivo source/rtl/binnum.c
 *      fue compilado con la bandera HB_COMPAT_XPP.
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *      BIN2I(),BIN2L(),BIN2U(),I2BIN(),L2BIN(),W2BIN(),WORD()*,FWRITE()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      WORD()*
 *  $CATEGORY$
 *      Conversin binaria
 *  $ONELINER$
 *      Convierte parmetros de doble precisin del mandato CALL a enteros
 *  $SYNTAX$
 *      WORD( <nDoble> ) --> <nEntero>
 *  $ARGUMENTS$
 *      <nDoble> es un valor numrico de doble precisin.
 *  $RETURNS$
 *      WORD() retorna un entero en el rango: -32767 a +32767
 *  $DESCRIPTION$
 *      Esta funcin convierte valores de doble precisin a enteros, para
 *      ser usados con el mandato CALL.
 *  $EXAMPLES$
 *      <fixed>
 *      // Utiliza WORD() como argumento del mandato CALL
 *      CALL INVENT WITH WORD(75300)
 *
 *      </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      La NG de Clipper NG establece que WORD() funcionar solamente cuando
 *      sea usada en la lista de parmetros del comando CALL, de otra manera
 *      devolver NIL, en Harbour esta funcionar donde sea.
 *  $FILES$
 *      La librera es rtl
 *  $SEEALSO$
 *       CALL
 *  $END$
 */


