Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La documentación de Harbour es
© El Proyecto Harbour
www.harbour-project.org
Harbour
FWH
Contenido
CONTENIDO ...................................................................................1
-1-
Harbour
FWH
La tabla estática de símbolos: .............................................................................27
La tabla dinámica de símbolos. ............................................................................27
Variables estáticas y públicas: ............................................................................. 27
La memoria: ......................................................................................................... 27
El sistema extendido: ...........................................................................................27
Arrays Multidimensionales: ..................................................................................27
El motor de Objetos: ............................................................................................27
El subsistema macro: ........................................................................................... 27
El subsistema de areas de trabajo: ...................................................................... 28
ASUNTOS LEGALES SOBRE LAS FAQ...............................................34
DERECHOS (COPYRIGHT )..........................................................................34
LICENCIA............................................................................................34
GARANTÍA...........................................................................................34
MARCAS REGISTRADAS ...........................................................................34
HARBOUR .....................................................................................35
QUÉ ES HARBOUR ? ..............................................................................35
POR QUÉ DESARROLLAR HARBOUR ? ............................................................35
QUE PLATAFORMAS SON SOPORTADAS POR HARBOUR ? .......................................36
QUIÉN ESTA DESARROLLANDO HARBOUR ? .....................................................36
ESTADO ACTUAL DE HARBOUR ....................................................................36
CÓMO COMENZÓ EL PROYECTO HARBOUR ? ......................................................36
A QUIÉN PERTENECE HARBOUR ? ................................................................37
AYUDANDO A DESARROLLAR HARBOUR..........................................38
DÓNDE PUEDO COMENZAR ? ......................................................................38
QUÉ COMPILADOR DE C DEBERÍA USAR ? .......................................................38
QUÉ OTRAS HERRAMIENTAS NECESITO ? .........................................................39
DÓNDE PUEDO ENCONTRAR LOS FUENTES ? .....................................................40
EL ESTADO ACTUAL INESTABLE ....................................................................40
EL ESTADO ACTUAL ESTABLE ......................................................................40
ACCESO DIRECTO AL CVS .......................................................................40
QUÉ ES EL CVS Y CÓMO PUEDO YO USARLO ? .................................................40
CÓMO PUEDO CONSTRUIR HARBOUR ? ..........................................................42
SOBRE QUÉ SE NECESITA TRABAJAR ? ...........................................................42
HAY ALGUN LINEAMIENTO DE DESARROLLO ? ...................................................42
ESTA BIEN EXTENDER EL LENGUAJE CON ALGUNAS CARACTERISTICAS ? .......................43
QUÉ CON TODAS ESAS EXTENSIONES AL LENGUAJE , ENTONCES ? ..............................43
NO PUEDO PROGRAMAR EN C, CÓMO PUEDO AYUDAR EN EL DESARROLLO ? .................43
-2-
Harbour
FWH
TENGO MUCHO CÓDIGO CLIPPER , YO PUEDO DONARLO , QUE DEBO HACER ? ................44
NO PUEDO ENVIAR CÓDIGO CLIPPER TAMPOCO , TODAVÍA PUEDO AYUDAR ? .................44
LISTAS DE CORREO DE HARBOUR...................................................45
HAY UNA LISTA DE CORREO DE DESARROLLADORES ? ..........................................45
HAY UNA LISTA DE CORREO DE USUARIOS ? ....................................................45
HAY UNA LISTA DE CORREO DE DISCUSIÓN GENERAL ? ........................................45
CÓMO REMOVERME DE LA LISTA DE CORREO ? ..................................................45
HAY ALGUNA REGLA EN LAS LISTAS ? ...........................................................46
ESTAN LAS LISTAS ARCHIVADAS EN ALGÚN LUGAR ? ...........................................46
HAY ALGÚN GRUPO DE NOTICIAS PARA HARBOUR ? ...........................................47
INSTALACIÓN DE HARBOUR ..........................................................48
DÓNDE PUEDO OBTENER BINARIOS PRE-CONSTRUIDOS ? ......................................48
CÓMO PUEDO INSTALAR LOS ARCHIVOS BINARIOS PRE-CONSTRUIDOS ? .....................48
CÓMO USAR HARBOUR A PARTIR DE LOS ARCHIVOS FUENTES ? ...............................50
PREGUNTAS GENERALES DE HARBOUR...........................................52
CUANDO SERÁ TERMINADO HARBOUR ? .........................................................52
SON LAS APLICACIONES <ATRIBUTO> QUE EN CA-CLIPPER ? ..............................52
QUÉ VENTAJAS TIENE HARBOUR SOBRE OTROS COMPILADORES DE CLIPPER ? ..............52
QUÉ VENTAJAS TIENEN OTROS COMPILADORES DE CLIPPER SOBRE HARBOUR ? ..............53
SOPORTARÁ HARBOUR LOS PRODUCTOS DE TERCEROS EXISTENTES PARA CA-CLIPPER ? . .53
ES HARBOUR UNA HERRAMIENTA DE DESARROLLO PARA WINDOWS ? .......................53
QUÉ PLATAFORMAS SON SOPORTADAS POR HARBOUR ? .......................................54
PUNTEROS Y ENLACES...................................................................55
ENLACES RELACIONADOS CON HARBOUR ........................................................55
ARTÍCULOS SOBRE HARBOUR .....................................................................55
ENLACES A HERRAMIENTAS DE DESARROLLO LIBRES (EN CUALQUIER SENTIDO DE LA
PALABRA ) ...........................................................................................55
ENLACES RELACIONADOS CON CLIPPER ..........................................................55
ENLACES RELACIONADOS CON SOFTWARE LIBRE. ................................................55
OTROS ENLACES ÚTILES ...........................................................................55
ASUNTOS LEGALES SOBRE SOFTWARE Y HARBOUR .......................57
QUE ES SOFTWARE LIBRE (FREE SOFTWARE ) ? .................................................57
ENTONCES HARBOUR ES DEL DOMINIO PÚBLICO ? .............................................57
-3-
Harbour
FWH
-4-
Harbour
FWH
FWH es una librería que puede lincar con su aplicación en Harbour facilitando el uso
de todas esas functionalidades.
Esta versión de FWH ha sido construida usando El compilador gratuito Borland C/C+
+5.5 (http://www.borland.com/bcppbuilder/freecompiler) compilador que tambien ha
sido utilizado para construir Harbour. Actualmente FWH tambien soporta el
compilador de Microsoft Visual C++.
FWH ha sido desarrollado para mantener una completa compatibilidad con la libreria
FiveWin para Clipper original. FiveTech así ofrece verdadera compatibilidad entre 16 y
32 bits. Debido a este nivel de compatibilidad ambos productos comparten el mismo
manual y los ejemplos proporcionados.
FWH utiliza las propias librerías de importación de Borland C/C++ 5.5 (ó de Microsoft
Visual C++, en adelante MSVC) para acceder al API de Windows por lo que no se
necesita el equivalente WinApi.lib de FiveWin para Clipper.Simple y facil de usar: Los
comandos y el conjunto de clases de FiveWin para Harbour han sido especialmente
diseñadas para ofrecer una gran facilidad de uso y requerir una mínima formación.
FiveWin ha sido siempre muy popular por su potencia y facilidad de uso.
-5-
Harbour
FWH
Estas razones demuestran lo importante que es usar FWH para migrar sus actuales
aplicaciones de Clipper y FiveWin a 32 bits. FWH le dará un control total sobre el
entorno Microsoft Windows y es indispensable para cualquier empresa de
programación profesional ya que permite entregar aplicaciones bajo Windows que
ofrecen soluciones de gestión modernas y actualizadas.
FWH está diseñado para ser usado con Harbour, el compilador compatible Clipper de
codigo abierto disponible en www.harbour-project.org. Aunque puede bajarse la
ultima versión de Harbour de esta web nosotros le recomendamos que utilice la que
le entregamos ya que ha sido probada y construida conteniendo sus archivos
ejecutables (harbour.exe) listos para usar. Solo haga click en el icono de instalación
de Harbour y éste se instalará automaticamente.
Como FWH ha sido especificamente construido para ser usado con el compilador
gratuito Borland C/C++ 5.5 se requiere también la instalación del compilador Borland
en su ordenador. El compilador gratuito Borland C/C++ 5.5 puede descargarlo desde
http://www.borland.com/bcppbuilder/freecompiler (requiere registro de usuario) o
desde http://bcc55.bizland.com (descarga directa). La instalación de Borland C es un
proceso automático, una vez completado, deberá crear los siguientes archivos ascii:
bcc32.cfg y ilink32.cfg e instalarlos en c:\Su_Borland_path\bin con el siguiente
contenido:
bcc32.cfg
-I"c:\Su_Borland_path\include"
-L"c:\Su_Borland_path\lib"
ilink32.cfg
-L"c:\ Su_Borland_path \lib"
-6-
Harbour
FWH
Una vez instalado Harbour, FWH y el compilador gratuito Borland C/C++,
simplemente vaya al directorio c:\FWH\SAMPLES y revise los paths definidos en
BuildH.bat para asegurarse que coinciden con los paths seleccionado en la instalación
de Harbour y Borland Luego escriba:
BuildH.bat tutor01
Esto hará que Harbour.exe compile tutor01.prg, llame a bcc32.exe para generar el
OBJ requerido, brc32.exe genere si existe el fichero de recursos RES y por último
ilink32.exe construya el EXE. Todo el proceso es realizado de un modo automático
desde BuildH.bat.
Una primera ventana tipo 'Hello World!' mostrará un pequeño dialogo en la pantalla.
Si no es así, por favor revise de nuevo los paths dentro BuildH.bat para asegurarse
que son los que ha seleccionado para la instalación de Harbour y del compilador
Borland.
FWH está compuesta por dos librerías FiveH.lib y FiveHC.lib. Junto a ellas , FWH
proporciona un gran conjunto de ficheros de cabecera (extensión .CH) que incluye
todos los comandos de XBase requeridos para crear y manejar los diferenter objetos
de Windows.
BuildH.bat:
ECHO Compiling...
set hdir=c:\harbour\harbour
set bcdir=c:\bcc55\bin
-7-
Harbour
FWH
@type clip.log
IF ERRORLEVEL 1 PAUSE
IF ERRORLEVEL 1 GOTO EXIT
:ENDCOMPILE
:LINKERROR
%1
rem if exist meminfo.txt notepad meminfo.txt
rem PAUSE * Linking errors *
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO Not exist the specified PRG
:EXIT
-8-
Harbour
FWH
Recomendaciones importantes:
Observe el uso del Borland bcc32.exe (compilador Borland C/C++ compiler), después
de llamar al propio Harbour, para generar los OBJs necesarios para luego ser lincados
con Borland ilink32.exe (también gratuito).
No utilice Borland Resource WorkShop para guardar sus DLLs de 32 bits, pueden
corromperse. Guarde sus recursos como un fichero '.RC' (ASCII), y luego podrá utilizar
el compilador de recursos 'BRC32.exe' para convertir el fichero '.RC' en una DLL de 32
bugs usando la utilidad que proporcionamos DLL\rc2dll32.bat.
Si mantiene todos sus recursos en una DLL, será muy fácil guardarlas en un fichero '.
RC' directamente desde Resource Workshop, luego utilice ese '.RC' para lincarlo
directamente en su '.EXE'.
ECHO Compiling...
set hdir=c:\harbour\harbour
set bcdir=c:\bcc55\bin
-9-
Harbour
FWH
IF EXIST %1.rc %bcdir%\brc32 -r %1
echo c0w32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.exe, + >> b32.bc
echo %1.map, + >> b32.bc
echo ..\lib\FiveH.lib ..\lib\FiveHC.lib + >> b32.bc
echo %hdir%\lib\b32\rtl.lib + >> b32.bc
echo %hdir%\lib\b32\vm.lib + >> b32.bc
echo %hdir%\lib\b32\gtwin.lib + >> b32.bc
echo %hdir%\lib\b32\lang.lib + >> b32.bc
echo %hdir%\lib\b32\macro.lib + >> b32.bc
echo %hdir%\lib\b32\rdd.lib + >> b32.bc
echo %hdir%\lib\b32\dbfntx.lib + >> b32.bc
echo %hdir%\lib\b32\debug.lib + >> b32.bc
echo %hdir%\lib\b32\common.lib + >> b32.bc
echo %hdir%\lib\b32\pp.lib + >> b32.bc
echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\import32.lib, >> b32.bc
IF EXIST %1.res echo %1.res >> b32.bc
%bcdir%\ilink32 -aa -Tpe @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built
ECHO
:LINKERROR
%1
rem if exist meminfo.txt notepad meminfo.txt
rem PAUSE * Linking errors *
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO Not exist the specified PRG
:EXIT
- 10 -
Harbour
FWH
automáticamente dichos cambios. Clp2Harb.exe es una pequeña aplicacion de
Harbour (se proporcionan sus fuentes). Clp2Harb.exe se debe ejecutar antes de
compilar sus fichero C:
Clp2harb.exe crea un fichero de salida con el nombre dado como segundo parámetro,
con los cambios ya realizados. Después ejecute bcc32.exe de Borlando con la
instrucción siguiente:
bcc32 -c TEMP\<YourFile.c>
BWCCRegister( GetResources() )
Actualmente puede usar el kit cliente de Advantage para 32 bits con Harbour para
acceder por acceso remoto o local a cualquier fichero DBF. El acceso remoto se basa
en el famoso servidor Advantage Xbase el cual esta también disponible para los
usuarios de Clipper (16 bits), pero el driver local es nuevo para todos los usuarios de
Clipper ya que no existe en 16 bits. El driver local funciona como una RDD estandar
con los ficheros DBF, por eso puede usarlo para desarrollar sus propias aplicaciones
con Harbour. El RDD de Advantage soporta los formatos CDX y NTX.
Las DLLs del driver local de Advantage se presentan en un software gratuito publicado
por Extended Systems en su Web y Fivewin para Harbour incluye las librerias
necesarias para acceder a esas DLLs.
- 11 -
Harbour
FWH
Diríjase al area "download" y seleccione la sección 5.7/2.7 release, haga click y
descargue el archivo arc.exe. Este software incluye todas las librerias necesarias que
son:
Para usar la RDD de Advantage desde sus aplicaciones Harbour tendrá que hacer
referencia al fichero 'ADS.CH' en sus ficheros PRG cuando sea necesario. Incluir en el
fichero .LNK las librerías rddads.lib y ace32.lib que están incluidos en el paquete de
Fivewin para Harbour y Requerir ('REQUEST') la RDD de Advantage RDD al principio
de su aplicación.
#include "FiveWin.ch"
#include "ads.ch"
REQUEST _ADS
//----------------------------------------------------//
function Main()
rddRegister( "ADS", 1 )
rddsetdefault( "ADS" )
SET SERVER LOCAL
SET FILETYPE TO CDX
- 12 -
Harbour
FWH
OrdSetFocus("DIRECCION") // Second Tag on Clientes.cdx
Gotop()
Browse() // Quick browse!!!
USE
return nil
//--------------------------------------------------//
- 13 -
Harbour
FWH
- 14 -
Elementos de Harbour
A continuación he escrito una pequeña guía que sirva para entender como se instala y
crea el compilador Harbour para los que quieren ser desarrolladores, sea de Harbour
mismo o de utilidades y librerías para el.
Ejemplificaremos la tarea suponiendo que se va a generar utilizando un entorno
D.O.S. (uno de los más conocidos y populares).
Primero se debe descargar el archivo compactado para la plataforma que va a utilizar.
Que será: - -archivo.zip para plataformas DOS y Winn 3.x, 9x, NTx
-archivo.tar.gz para plataformas Un*x yy Linux.
Cuando se descomprime el archivo compactado para la plataforma que va a utilizar se
crean una serie de subdirectorios que van a colgar del subdirectorio raíz elegido, por
ej hb-dev:
\rtl\gtdos
\gtwin
\gtos2
\gtstd
\gtcrs
\gtsln
\gtpca
70
Harbour
FWH
\vm
\utils\hbrun
\hbtest
\hbdoc
\lib\b16
\b32
\..
\obj\b16
\b32
\bin\b16
\b32
\tests
\samples
SUBDIRECTORIOS:
Como se podrá ver, los subdirectorios están separados en unidades lógicasó
componentes con una funcionalidad, que le es propia.
hb-dev\include
--------------
Contiene los headers ó archivos de cabecera, tanto los archivos.h (utilizados desde
lenguaje C) como los archivos.ch usados por Clipper/ Harbour.
hb-dev\source
-------------
Desde aqui cuelgan los subdirectorios que contienen los archivos fuentes (archivos.c y
archivos.prg) que componen el compilador y la RTL, como se puede ver arriba.
hb-dev\source\common
--------------------
Harbour tiene un directorio "common", para archivos de uso común y aquellas
funciones que son compartidas por el compilador y la RTL.Puede haber alguna
redundancia, pero éste es el contexto históricopor el que esta hecho de esta
forma.Por ejemplo hb_strupr() y otras deberían estar aqui
hb-dev\source\compiler
----------------------
Contiene archivos propios del compilador.
14
Harbour
FWH
hb-dev\source\debug
--------------------
Contiene archivos del debugger ó depurador.
hb-dev\source\macro
-------------------
Contiene archivos del compilador de macros
hb-dev\source\pp
----------------
Contiene archivos del pre-procesador
hb-dev\source\rdd\
------------------
Contiene archivos de drivers de bases de datos reemplazables
hb-dev\source\rtl\gt
--------------------
Contiene archivos de la Run Time Library (librerías)
15
Harbour
FWH
- gtos2 \
- gtstd | para otras
- gtcrs | plataformas
- gtsln /
- gtpca /
- rdd
- tools
Para qué sirven cada uno de los programas ?
Primero que nada quiero hacer la salvedad que la extensión de los archivos exe (por
ejecutable), lib (por librería), están históricamente ligados a un entorno DOS y que
esto puede no aplicarse (de hecho no lo hace) en otras plataformas como linux. Pero
en este caso (plataforma DOS) sirve para entender mejor su uso.
a) Ejecutables:
1 - harbour.exe
===============
Es el compilador generado, es el equivalente a CLIPPER.EXE.
Recibe como entrada archivos.prg y puede obtenerse como salida archivos .ppo,
archivos.c, archivos.hrb ú otros (ver documentación).
Actualmente Harbour carece de un linker o enlazador para construir los archivos.exe
finales, pero se está trabajando activamente en ello.
2 - hbpp.exe
============
Es el pre-procesador de Harbour, realiza las mismas tareas que el pre procesador de
Clipper.
3 - hbrun.exe
=============
Es un intérprete de p-code, producto intermedio entre un archivo.prg y un archivo
ejecutable. Tiene similitud con el intérprete de p-code java.
4 - hbtest.exe
===============
Ejecutable final, que contiene archivos.prg que se utilizan como test, que se compilan
a archivos fuente de lenguaje C y luego se enlazan con laslibrerías de Harbour para
generar un ejecutable con propósito de testeo.
5 - hbdoc.exe
=============
Es un programa para generar documentación de Harbour en distintos formatos y
empaquetamientos: norton guides (ng), rich tech format (rtf), man pages, todo a
partir de simples archivos de texto.
Para ello utiliza una plantilla, basada en el diseño Nanforum de documentación, que
es la habitualmente usada por los desarrolladores de clipper de todo el mundo.
b) Librerías: (principales, no exhaustivo!)
- vm.lib
16
Harbour
FWH
- macro.lib
- pp.lib
- common.lib
- debug.lib
- rtl.lib
- dbfcdx.lib
- dbfntx.lib
- nulsys.lib
- gtdos
- rdd
- tools
1 - vm.lib
Librería dónde se encuentran las funciones que componen la "Virtual Machine", o
máquina virtual de Harbour.
2 - macro.lib
Librería dónde se encuentran las funciones del compilador de las macros de Clipper.
3 - pp.lib
Librería dónde se encuentran las funciones del pre-procesador.
4 - common.lib
Librería dónde se encuentran funciones comunes del compilador independiente y el
compilador de macros, optimizador de expresiones, etc.
5 - debug.lib
Librería dónde se encuentran las funciones del depurador de Harbour, el equivalente
al ALTD.exe de Clipper.
6 - rtl
Librería dónde se encuentran las funciones de la Run-Time Library (librería de
ejecución, el equivalente a clipper.lib y extend.lib
7 - dbfcdx.lib
Librería dónde se encuentran las funciones del controlador de índices CDX.
8 - dbfntx.lib
Librería dónde se encuentran las funciones del controlador de índices NTX.
9 - gtdos
Librería donde se encuentran las funciones del controlador de terminal, el equivalente
de clipper a terminal.lib para DOS.
10 - rdd
Librería donde se encuentran las funciones del controlador reemplazable de bases de
datos (RDD)
11 - tools
Librería donde se encuentran funciones externas de propósito general, el equivalente
de Clipper de una librería de terceras partes.
NOTA Esta es una lista general, no pretende ser exaustiva sino darle un mayor
entendimiento sobre cómo esta construido Harbour.
17
Harbour
FWH
Si Ud. en cambio descarga los archivos fuentes, podrá construir los ejecutables y las
librerías citadas Ud. mismo, y si se siente capaz de hacerlo nosotros lo alentamos a
que lo haga.
De esa forma podrá colaborar con las distintas etapas.
Antes de empezar debe tener seteadas distintas variables de entorno para el correcto
desarrollo del proyecto:
SET HB_ARCHITECTURE=dos
SET HB_COMPILER=bcc16
SET HB_GT_LIB=gtdos
SET HB_HOMEDRIVE=D
SET HOME=D:\HB33
SET HOMEPATH=/HB33/
SET C_USR=-DHARBOUR_USE_DOS_GTAPI
REM SET BISON_SIMPLE=C:\BATCH\BISON.SIMPLE
18
Harbour
FWH
make_b16.bat se puede invocar con el parámetro:
parametro - CLEAN
Si existen...
Borra todo los ejecutables del subdir \bin\b16
Borra todo los archivos.tds del subdir \bin\b16
Borra todo los archivos.map del subdir \bin\b16
Borra todo los archivos.lib del subdir \lib\b16
Borra todo los archivos.bak del subdir \lib\b16
Borra todo los archivos.obj del subdir \obj\b16
Borra todo los archivos.c del subdir \obj\b16
Borra todo los archivos.h del subdir \obj\b16
Borra el archivo make_b16.log del subdirectorio principal del proyecto, que hemos
elegido(hb-dev)
Este último es un archivo hacia donde se redireccionan los errores ocurridos durante
las distintas etapas en el proceso de generación del compilador.
sin parámetros
Invoca al programa ejecutable make.exe (puede variar su nombre según el
compilador en cuestión) que forma parte del paquete del compilador.
Este ejecutable make, a su vez llama al compilador de lenguaje C (de línea de
comandos, no de entorno de ventanas) bcc.exe y a otros ejecutables que son
tasm.exe flex.exe, bison.exe, tlib.exe de acuerdo a las dependencias que existan en
un archivo makefile.[bc]
Los llama cada vez que observa que la hora y fecha del archivo fuente.c no se
corresponden con la hora y fecha del archivo.obj (archivo binario producto de la
compilación del anterior).
Este ejecutable make.exe recibe distintos parámetros de configuración, y ya estan
seteados..
Si ocurre algún error durante el funcionamiento de estos ejecutables, estos errores
se redireccionan al archivo "make_b16.log" para poder ser revisados posteriormente.
19
Harbour
FWH
macro.l -> macrol.c
Por la acción de bison.exe se generan los siguientes archivos.c:
macro.y -> macroy.c
harbour.y -> harboury.c
Por la acción de bcc.exe se generan los siguientes archivos.obj:
harbour.obj
harboury.obj * producto de bison
harbourl.obj * producto de flex
cmdcheck.obj
hbusage.obj
hbgenerr.obj
hbpcode.obj
genc.obj
genobj32.obj
genjava.obj
genhrb.obj
expropta.obj
exproptb.obj
exproptc.obj
hbfunchk.obj
20
Harbour
FWH
Por la acción de tlib.exe se genera MACRO.LIB a partir de los archivos.obj:
macroy.obj
macrol.obj
macroa.obj
macrob.obj
macroc.obj
21
Harbour
FWH
common.lib
dbfcdx.lib
dbfntx.lib
nulsys.lib
rdd.lib
rtl.lib
tools.lib
SET HB_ARCHITECTURE=w32
SET HB_COMPILER=bcc32
SET HB_GT_LIB=gtwin
SET HB_HOMEDRIVE=C
SET HOME=C:\hb-dev
SET HOMEPATH=/hb-dev/
SET C_USR=-DHARBOUR_USE_WIN_GTAPI
SET BISON_SIMPLE=C:\BATCH\BISON.SIMPLE
PATH=c:\windows\command;c:\bcc55\bin;c:\ssh;c:\cvs;c:\flex;c:\batch;
c:\hb-dev\bin
22
Harbour
FWH
Flex
Flex es una herramienta para generar programas exploradores ó "scanners":
programas que reconocen patrones léxicos en el texto. Flex lee el archivo de entrada
provisto (en nuestro caso harbour.l y macro.l), o el archivo estandar si no se da otro,
por una descripción de un explorador a generar.
La descripción es en forma de pares de expresiones regulares y código de lenguaje C,
llamadas "reglas".Flex genera como salida un archivo fuente de lenguaje C por cada
archivo de entrada (que en nuestro caso son harbourl.c y macrol.c ), el cual define
una rutina "yylex()".Este archivo es compilado y enlazado con una librería para
producir un ejecutable.Cuando el ejecutable esta corriendo, analiza su entrada en
busca de expresiones regulares. Cuando encuentra alguna ejecuta el correspondiente
código C.La terminación de los archivos.l se debe a que el programa original que los
generaba se llamaba LEX, en cambio flex (Fast LEX) es un proyecto GNU.
Mayor información sobre flex puede ser encontrada en el sitio: www.gnu.org
Bison
23
Harbour
FWH
Bison es un generador de "parsers" o analizadores (de propósito general) que
convierte una descripción gramatical para una gramática de libre contexto en un
programa de lenguaje C, para analizar esa gramática.
En el caso de Harbour el archivo de entrada es "harbour.y" Bison genera como salida
un archivo fuente de lenguaje C llamado "harboury.c" La terminación de los archivos.y
se debe a que el programa original que los generaba se llamaba YACC, bison es un
proyecto GNU.
Cuando Ud. corre Bison, Ud. le esta dando un archivo de gramática como entrada. La
salida es un archivo fuente en "C" que analiza el lenguaje descripto por la gramática.
Este archivo es llamado el analizador Bison. Tenga en mente que la utilidad Bison y el
analizador bison son dos programas distintos: El ejecutable ó utilidad Bison es un
programa cuya salida es el analizador Bison que formará parte del compilador.
El trabajo del analizador Bison es agrupar tokens en conjuntos de acuerdo a las reglas
gramaticales.Por ejemplo para construir identificadores y operadores dentro de
expresiones. A medida que hace esto, el ejecuta las acciones para las reglas
gramaticales que el usa.
Los tokens vienen desde una función llamada el analizador léxico que Ud. debe
aportar de alguna forma (como ser escribirlo en C).El analizador Bison llama al
analizador léxico cada vez que el necesita un nuevo token. Este no sabe que hay
"dentro" de los tokens (aunque sus valores semánticos pueden reflejar esto).
Tipicamente el analizador léxico hace los tokens analizando caracteres de texto, pero
Bison no depende de esto. vea la función yylex().
El analizador Bison es código C, el cual define una función llamada yyparse(), la cual
implementa aquella gramática. Esta función no constituye un programa C completo:
Ud. debe aportar algunas funciones adicionales. Una es el analizador léxico, otra es
una función de reporte de errores a la cual el analizador llama para reportar un error.
En adición un programa C completo debe comenzar con una función llamada main(),
Ud. debe proveer esto, y arreglar para que esta llame a la función yyparse() ó el
analizador no correrá nunca.
Aparte de los nombres de los tipos de tokens y los símbolos en las acciones que Ud.
escriba, todo los nombres de variables y funciones usadas en el analizador Bison
empiezan con 'yy' o 'YY'. Esto incluye funciones de interfaz como el analizador léxico
yylex, la función de reporte de errores yyerror() y la función analizadora misma
yyparse(). Esto también incluye numerosos identificadores usados para propósitos
internos. Entonces Ud. debería evitar usar identificadores de C que comiencen con
"yy" o "YY" en el archivo de gramática Bison excepto por los ya comentados.
Mayor información sobre Bison puede ser encontrada en el
sitio:www.gnu.org/software/bison/bison.html
24
Harbour
FWH
macro.l -> macrol.c
Por la acción de bison.exe se generan los siguientes archivos.c:
macro.y -> macroy.c
harbour.y -> harboury.c
A través de las funciones contenidas en harbourl.c y harboury.c y luego de generado
harbour.exe,
El compilador analiza el codigo fuente del usuario (.PRG), y se geneneran archivos en
lenguaje C que contienen llamados a las funciones a las que hace referencia el prg,
sean de la rtl, ú otras librerías.
25
Harbour
FWH
26
Harbour
FWH
• El motor de Objetos
• El subsistema macro
• El subsistema de áreas de trabajo
El Arranque:
Controla la inicialización de los diferentes subsistemas de la VM, esta es invocada al
principio de la aplicación. Esta también controla la salida de la aplicación.
La Pila (stack):
La VM No usa la pila de la computadora directamente, esta usa en su lugar su propia
pila para manipular valores (parámetros, valores retornados y símbolos) como lo hace
la pila de hardware.
La tabla estática de símbolos:
Es creada por el compilador en tiempo de compilación y agrupada por el enlazador
(linker) en los OBJs, Este subsistema es responsable por un inmediato acceso a la
ubicación de las funciones y esta altamente relacionada a la tabla dinámica de
símbolos en tiempo de ejecución. Esta tabla contiene muchos símbolos duplicados
que serán optimizados por la tabla dinámica de símbolos.
La tabla dinámica de símbolos.
Es dinámicamente generada desde el subsistema de inicio al principio de la
aplicación. Esta organiza en una forma eficiente la tabla estática de símbolos creando
un índice alfabético que permite una búsqueda dicotómica de los símbolos. Este
subsistema es responsable por el rápido acceso a los símbolos (funciones, variables,
campos y alias de las areas de trabajo).
Variables estáticas y públicas:
Responsable por el almacenamiento de variables públicas y estáticas.
La memoria:
Responsable por la ubicación, reubicación, bloqueo, desbloqueo y liberación de
memoria.
El sistema extendido:
Define la interfaz (_parc(), ..., _retc() ) desde un bajo nivel (lenguaje C) hasta un alto
nivel (lenguaje Clipper). Este subsistema es responsable por conectar en una forma
adecuada las funciones en lenguaje C a la aplicación entera.
Arrays Multidimensionales:
Este subsistema permite la creación de arrays, y los servicios para manipular estos en
todas sus formas. Los arrays son extensivamente usados por el lenguaje Clipper y
también ellos son la fundación de los Objetos (los Objetos son sólo arrays referidos a
una Clase específica).
El motor de Objetos:
Responsable por la creación de Clases y Objetos. Este también define la forma de
acceso a un método específico de clase para ser invocados por la VM y provee todo
tipo de información de clases que pueden ser requeridos al tiempo de la ejecución.
El subsistema macro:
27
Harbour
FWH
Este implementa un compilador reducido que puede ser usado en tiempo de ejecución
para generar pcodes para ser usados por la aplicación. En efecto ésta es una parte de
la especificaciones de yacc (Bison) para Harbour.
El subsistema de areas de trabajo:
Responsable por el manejo de las bases de datos. Este subsistema define la ubicación
donde las áreas de trabajos serán almacenadas y provee todas las funciones de
acceso a esas áreas de trabajo. Este también implementa la interfaz para el
controlador de base de datos reemplazable.
Los opcodes de Harbour imitarán a los de Clipper ?, habrá una relación 1:1 entre
ellos ?Si es así, están los opcodes de Clipper descriptos en algún lado ?.
Clipper language pcode opcodes
DEFINE NAME VALOR BYTES
#define NOP 0x00 1
#define PUSHC 0x01 3 + literal
#define PUSHN 0x05 3
#define POPF 0x06 3
#define POPM 0x07 3
#define POPQF 0x08 3
#define PUSHA 0x09 3
#define PUSHF 0x0A 3
#define PUSHM 0x0B 3
#define PUSHMR 0x0C 3
#define PUSHP 0x0D 3
#define PUSHQF 0x0E 3
#define PUSHV 0x0F 3
#define SFRAME 0x10 3
#define SINIT 0x11 3
#define SYMBOL 0x12 3
#define SYMF 0x13 3
#define BEGIN_SEQ 0x19 3
#define JDBG 0x1A 3
#define JF 0x1B 3
#define JFPT 0x1C 3
#define JISW 0x1D 3
#define JMP 0x1E 3
#define JNEI 0x1F 3
#define JT 0x20 3
#define JTPF 0x21 3
#define PUSHBL 0x23 3
#define ARRAYATI 0x24 3
#define ARRAYPUTI 0x25 3
#define CALL 0x26 3
#define DO 0x27 3
#define FRAME 0x28 3
28
Harbour
FWH
#define FUNC 0x29 3
#define LINE 0x2A 3
#define MAKEA 0x2B 3
#define MAKELA 0x2C 3
#define PARAMS 0x2D 3
#define POPFL 0x2E 3
#define POPL 0x2F 3
#define POPS 0x30 3
#define PRIVATES 0x31 3
#define PUBLICS 0x33 3
#define PUSHFL 0x34 3
#define PUSHFLR 0x35 3
#define PUSHI 0x36 3
#define PUSHL 0x37 3
#define PUSHLR 0x38 3
#define PUSHS 0x39 3
#define PUSHSR 0x3A 3
#define PUSHW 0x3B 3
#define SEND 0x3C 3
#define XBLOCK 0x3D 3
#define MPOPF 0x4A 5
#define MPOPM 0x4B 5
#define MPOPQF 0x4C 5
#define MPUSHA 0x4D 5
#define MPUSHF 0x4E 5
#define MPUSHM 0x4F 5
#define MPUSHMR 0x50 5
#define MPUSHP 0x51 5
#define MPUSHQF 0x52 5
#define MPUSHV 0x53 5
#define MSYMBOL 0x54 5
#define MSYMF 0x55 5
#define ABS 0x56 1
#define AND 0x57 1
#define ARRAYAT0x58 1
#define ARRAYPUT 0x59 1
#define BREAK 0x5A 1
#define DEC 0x5B 1
#define DIVIDE 0x5C 1
#define DOOP 0x5D 1
#define EEQ 0x5E 1
#define ENDBLOCK 0x5F 1
#define ENDPROC 0x60 1
#define END_SEQ0x61 1
29
Harbour
FWH
#define EQ 0x62 1
#define EVENTS 0x63 1
#define FALSE 0x64 1
#define GE 0x65 1
#define GT 0x66 1
#define INC 0x67 1
#define LE 0x68 1
#define LT 0x69 1
#define MINUS 0x6A 1
#define MULT 0x6B 1
#define NE 0x6C 1
#define NEGATE 0x6E 1
#define NOP2 0x6F 1
#define NOT 0x70 1
#define NULL 0x71 1
#define ONE1 0x72 1
#define OR 0x73 1
#define PCOUNT 0x74 1
#define PLUS 0x75 1
#define POP 0x76 1
#define PUSHRV 0x77 1
#define QSELF 0x78 1
#define SAVE_RET 0x79 1
#define TRUE 0x7A 1
#define UNDEF 0x7B 1
#define ZER0 0x7C 1
#define ZZBLOCK 0x7D 1
#define AXPRIN 0x7E 1
#define AXPROUT 0x7F 1
#define BOF 0x80 1
#define DELETED 0x81 1
#define EOF 0x82 1
#define FCOUNT 0x83 1
#define FIELDNAME 0x84 1
#define FLOCK 0x85 1
#define FOUND 0x86 1
#define FSELECT0 0x87 1
#define FSELECT1 0x88 1
#define LASTREC 0x89 1
#define LOCK 0x8A 1
#define RECNO 0x8B 1
#define BNAMES 0x8C 1
#define LNAMES 0x8D 1
#define SNAMES 0x8E 1
30
Harbour
FWH
#define SRCNAME 0x8F 1
#define TYPE 0x90 1
#define WAVE 0x91 1
#define WAVEA 0x92 1
#define WAVEF 0x93 1
#define WAVEL 0x94 1
#define WAVEP 0x95 1
#define WAVEPOP 0x96 1
#define WAVEPOPF 0x97 1
#define WAVEPOPQ 0x98 1
#define WAVEQ 0x99 1
#define WSYMBOL 0x9A 1
#define AADD 0x9B 1
#define ASC 0x9C 1
#define AT 0x9D 1
#define CDOW 0x9E 1
#define CHR 0x9F 1
#define CMONTH 0xA0 1
#define CTOD 0xA1 1
#define DATE 0xA2 1
#define DAY 0xA3 1
#define DOW 0xA4 1
#define DTOC 0xA5 1
#define DTOS 0xA6 1
#define EMPTY 0xA7 1
#define QEXP 0xA8 1
#define EXPON 0xA9 1
#define INSTR 0xAA 1
#define INT 0xAB 1
#define LEFT 0xAC 1
#define LEN 0xAD 1
#define LOGQ 0xAE 1
#define LOWER 0xAF 1
#define LTRIM 0xB0 1
#define MAX 0xB1 1
#define MIN 0xB2 1
#define MODULUS 0xB3 1
#define MONTH 0xB4 1
#define REPLICATE 0xB5 1
#define ROUND 0xB6 1
#define SECONDS 0xB7 1
#define SPACE 0xB8 1
#define QSQRT 0xB9 1
#define STR1 0xBA 1
31
Harbour
FWH
#define STR2 0xBB 1
#define STR3 0xBC 1
#define SUB2 0xBD 1
#define SUB3 0xBE 1
#define TIME 0xBF 1
#define TRIM 0xC0 1
#define UPPER 0xC1 1
#define VAL 0xC2 1
#define VALTYPE 0xC3 1
#define WORD 0xC4 1
#define YEAR 0xC5 1
#define TRANS 0xC6 1
#define COL 0xC7 1
#define DEVPOS 0xC8 1
#define INKEY0 0xC9 1
#define INKEY1 0xCA 1
#define PCOL 0xCB 1
#define PROW 0xCC 1
#define ROW 0xCD 1
#define SETPOS 0xCE 1
#define SETPOSBS 0xCF 1
Por ejemplo: El lenguaje Clipper usa opcodes para Row(), Col(), Upper(), Space(),
Replicate(), InKey(), Year(), Month(), etc... dónde nosotros sólo queremos llamar a una
función estándar de lenguaje C, que use el sistema extendido estándar y que pueda
ser fácilmente modificada.
Así Harbour usará muchos menos opcodes que el lenguaje Clippper. Esto ayudará a
tener un compilador y una VM más simple y fácil de mantener.
32
Harbour
FWH
funciones de la VM, así la velocidad de ejecución de la VM puede incrementarse.
Clipper usa esto).
33
Harbour
FWH
Derechos (Copyright)
Este documento esta basado en las FAQs de David A. Pearson copyrighted (c) 1999,
2000, 2001 (con su autorización). Este compendio de preguntas más frecuentes (de
sus siglas en inglés, FAQ), es una evolución de distintos documentos en español hacia
una sincronización multi-idiomática, para mejor servir a su propósito.Algunas
porciones del documento pueden ser copyright de otros autores individuales.
Licencia
Este documento debe ser considerado como software libre, distribuido bajo los
términos de la Licencia Pública General, GNU version 2. Por detalles consulte el
archivo COPYING.
Garantía
"Este programa es distribuido con la esperanza que le pueda ser útil, pero SIN NINGUNA
GARANTIA; aún sin la garantía implícita de COMERCIALIZACION O DESTINO PARA ALGÚN
PROPÓSITO PARTICULAR." Vea la Licencia Pública General, GNU para mayores detalles.
Marcas Registradas
Esta documentación hace a varias Marcas Registradas, que sólo son usadas con propósito de
referencia.
34
Harbour
FWH
Harbour
Qué es Harbour ?
Harbour es un compilador libre (gratis !) inter-plataforma para el lenguaje xBase, a
menudo referido como Clipper (el lenguaje que es implementado por el compilador
CA-Clipper).
Especificamente Harbour esta diseñado para ser tan cercano al 100% de
compatibilidad con CA-Clipper (MR) como sea humanamente posible.La versión que
se eligió para lograr tal compatibilidad es la versión 5.2e internacional.
Esto no quiere decir que los agregados encontrados en la versión 5.3 no se pondrán
dentro de Harbour, esto simplemente refleja el hecho que muchos programadores de
Clipper ven a la versión 5.2e como la "última mejor" implementación de Clipper.
De ahora en más siempre que se haga referencia a CA-Clipper (MR) y no se indique
otra cosa estaremos hablando de esta versión (C52).Aunque se han agregado algunas
funciones básicas pertenecientes a la versión 5.3, que no alteran el diseño del
compilador y que ya estaban disponibles en lenguaje C y eran ampliamente
utilizadas. Si las extensiones al lenguaje son importantes para Ud. por favor siéntase
libre para contribuir al proyecto.
El compilador de Harbour cumple la misma función que CLIPPER.EXE (MR).Tiene la
ventaja que puede generar código de lenguaje C, siendo así virtualmente compatible
con miles de librerías y programas. Se está trabajando en la opción de generar
ejecutables para cada una de las plataformas.Convierte archivos PRG ---> archivos
"C"---------> archivos ejecutables archivos PRG ------------------------------> archivos
ejecutables
Viene acompañado de librerías que contienen funciones equivalentes a las que
acompañan a CA-Clipper 5.2e Inernacional. Harbour se entrega con todo el codigo
fuente (99% ANSI C) y archivos make, y bat, así todo lo que se necesita hacer para
tenerlo corriendo en su plataforma, es construirlo y conectarlo a la interfaz correcta.
Hay archivos binarios precompilados si Ud. desea testear el compilador y no ir a
través de los pasos para construirlo.
Por qué desarrollar Harbour ?
CA-Clipper (MR) ha sido desde sus comienzos la herramienta preferida por miles de
programadores. Hay probablemente más razones para desarrollar harbour que los
desarrolladores que hay de Harbour.Para obtener un mejor entendimiento sobre por
qué el software libre es desarrollado Ud. podría querer leer "The Cathedral and the
Bazaar" (en inglés unicamente).Algunas de las causas que motivaron el desarrollo de
Harbour fueron:
La desaparición de la posibilidad de nuevas versiones de CA-Clipper por
discontinuación del producto.
La dificultad de una migración fácil desde CA-Clipper bajo D.O.S. hacia un entorno
windows.
35
Harbour
FWH
Las distintas empresas que ofrecen alternativas de migración, han adaptado el
lenguaje de manera tal que se hace necesario el aprendizaje de práctimente un nuevo
lenguaje de programación.
La falta de soporte real de la compañia propietaria ante conocidos bugs.
Que plataformas son soportadas por Harbour ?
Actualmente, Harbour no esta aún terminado, pero creará ejecutables para correr en
forma nativa en las siguientes plataformas:
Linux (todas las distribuciones)
DOS
Win 3.x
Win 9x, Win ME
Win NT 4.x, 5.x, Win 2000
OS/2
Mucha gente. Hay un pequeño grupo de personas quienes pueden ser llamados el
"equipo de desarrollo del núcleo de Harbour", (graciosamente llamada la tripulación)
pero la cantidad de personas que esta contribuyendo al proyecto esta aumentando
continuamente.Cualquiera que lo desee puede unirse al equipo de desarrollo y, si Ud.
tiene algo que ofrecer al proyecto será más que bienvenido. Cualquiera que desee
consultar la lista de desarrolladores lo puede hacer en el sitio Web de Harbour y mirar
en "tripulación".
Para más información acerca del estado actual del proyecto harbour o si Ud. desea
unirse para su desarrollo, chequee en el sitio Web http://harbour-project.org (en
inglés) el cual tiene información actualizada acerca de los últimos cambios.
36
Harbour
FWH
Nadie es propietario de Harbour, pero mucha gente tiene el copyright sobre porciones
de Harbour.
37
Harbour
FWH
DOS 16bit
Borland C/C++ 3.1
GNU/Linux
GCC (varias versiones).
OS/2
GCC ( EMX)
IBM C++
Macintosh
MPW
Instrucciones sobre cómo construir harbour con los compiladores de arriba deberían
residir en el directorio doc del árbol fuente de Harbour. Si esa documentación esta
desaparecida por favor considere preguntar acerca de ella en la lista de correo de
desarrolladores y, una vez que Ud. tenga la información, formatee y póngala en el
directorio doc para ayudar a otros quienes pueden desear preguntar lo mismo.
38
Harbour
FWH
39
Harbour
FWH
TODO: Proveer enlace
Un cliente CVS para su plataforma. Por favor vea la seccion FAQ titulada Qué es el
CVS y cómo puedo yo usarlo ? para más detalles sobre la obtención del cliente CVS
para su entorno.
Dónde puedo encontrar los fuentes ?
Hay 3 métodos de obtener las fuentes para Harbour, cual método Ud. use dependerá
cuan actualizado sienta Ud. que lo necesita.
El estado actual inestable
Un archivo de todos los fuentes del CVS está disponible diariamente a través del
Servidor CVS de SourceForge
Bajar desde: http://cvs.sourceforge.net/cvstarballs/Harbour-project-cvsroot.tar.gz.or
favor este advertido que esta es una versión inestable. Usando este código fuente
podrían pasar toda clase de cosas terribles, esto puede aún no compilar.Ud. ha sido
advertido.
También note que lo de arriba es el backup de todos los archivos del CVS, esto
incluye registros de todos los cambios hechos al código fuente desde el principio del
proyecto! Por favor note que el archivo es un archivo "tar gzipeado" que contiene
archivos de texto en formato Unix (los fuentes). Esto no significa que no pueda
trabajar en otras plataformas, lo hará es simple código fuente, pero no se sorprenda si
el código fuente luce divertido cuando use un editor de texto no apropiado.Menos
frecuente una copia de los fuentes (no un backup del CVS) está disponible en el sitio
Web de Harbour. Si Ud, sólo desea los fuentes y no una copia de backup de todo el
CVS, esto es lo que Ud. debería descargar.
El estado actual estable
Cada cierto tiempo, el estado actual de Harbour es hecho disponible desde la página
de descarga del sitio web del proyecto Harbour . Estos estados son referidos como
liberaciones o "releases" y son considerados estables, en el sentido que los fuentes
compilan y que no hay errores conocidos en el compilador, máquina virtual ó librería
de ejecución.
Si Ud. gusta de jugar con software de calidad alfa, pero quiere sentirse seguro
haciendolo, entonces la liberación estable es para Ud.
Acceso Directo al CVS
El mejor y más directo método de obtener el código fuente es desde el servidor CVS.
Este es donde los desarrolladores de Harbour trabajan sobre los fuentes de Harbour
(actualmente, todos ellos trabajan en sus propias máquinas, este servidor les da a
ellos, en efecto un directorio virtual compartido).
Si Ud. intenta trabajar con Harbour construido desde el CVS mismo, Ud. debería
realmente considerar suscribirse a la lista de correo del desarrolladores .
Por favor note que si Ud. quiere ayudar a desarrollar Harbour entonces la última
opción es la mejor (y, a largo plazo, la única opción útil para todo lo concerniente).
Qué es el CVS y cómo puedo yo usarlo ?
40
Harbour
FWH
Antes de proceder Ud. debería darle una buena leída a la introducción al CVS por Jim
Blandy Leer este documento podría ahorrarle a Ud. un montón de confusión más
tarde.Para usar el servidor CVS, Ud. primero necesita obtener una copia del software
cliente CVS para su sistema operativo:
Microsoft Windows Vea http://www.cyclic.com/cvs/windows.html para más detalles.
DOS 16bit/32bitVea la seccion DOS en http://www.cyclic.com/cvs/other.html.
GNU/Linux Muchas distribuciones vienen con el cliente cvs empaquetado como parte
de la distribucion. Si Ud. no lo tiene instalado chequee sus CDs de instalación ó
chequee el sitio ftp para la distribución en cuestion.
OS/2 http://www.cyclic.com/cvs/os2.html
ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu/devtools/cvs110.zip
Macintosh Vea http://www.cyclic.com/cvs/mac.html para más detalles.
Otros Si Ud. esta construyendo harbour con un sistema operativo no listado,
entonces por favor contacte al mantenedor de las FAQ, con detalles completos así
esta lista puede ser actualizada.
Una vez que Ud tenga su cliente CVS instalado, Ud. puede ganar acceso anónimo al
servidor CVS de Harbour. Dependiendo de la plataforma, la primera cosa que Ud.
necesita hacer es setear la variable de entorno CVSROOT a:
:pserver:anonymous@cvs.harbour-project.sourceforge.net:/cvsroot/harbour-
project
En adición a lo de arriba algunos entornos pueden requerir información extra. Por
ejemplo, en DOS, windows y OS/2, los clientes CVS necesitan de dos variables de
entorno extras, HOMEDRIVE y HOMEPATH .Estas 2 variables de entorno le dicen al
cliente CVS donde estará el código fuente localmente. Por ejemplo, si su directorio de
desarrollo Harbour esta en S:\FREESOFT\HARBOUR
Ud. ha seteado:
SET HOMEDRIVE=S
SET HOMEPATH=\FREESOFT\HARBOUR\
para obtener una copia del repositorio del CVS de Harbour (usuarios del cliente DOS
han reportado que no tienen el comando extract y que el comando checkout debe ser
usado en su lugar).
41
Harbour
FWH
Nota: Los comandos CVS y los directorios son sensitivos a mayúsculas: harbour debe
estar en todos en minúsculas (también note que en SourceForge Harbour es conocido
como "harbour-project".
Luego, cuando Ud. desea obtener los cambios del CVS, Ud. puede hacer una de las
dos cosas:
Repetir el comando extract desde su directorio de Harbour.
Desde su directorio Harbour ejecutar cvs update .
Si Ud. tiene problemas después de leer lo de arriba por favor considere leer
Introducción al CVS y también la documentación para el cliente CVS que Ud. ha
instalado. Si, después de leer ambos documentos, Ud. esta todavía teniendo
problemas Ud. debería enviar un mensaje pulido a la lista de correo de los
desarrolladores detallando su plataforma, entorno, todas las etapas que Ud. realizó y
la exacta naturaleza del problema.
42
Harbour
FWH
Una onza de testeo puede salvar toneladas de depuración. Por favor asegurese que,
cuando Ud. cambia código, Ud puede compilar y usar Harbour, antes de enviar
cambios.
El idioma Inglés es lo más cerca que nosotros tenemos a un lenguaje común. Donde
sea posible por favor, codifique, comente y documente en Inglés.
Por favor no haga uso de código, que Ud. no tenga derecho de usar. Por ejemplo no
copie los archivos de encabezados (header) de CA-Clipper para hacer archivos de
encabezados de Harbour.
Diviértase.
43
Harbour
FWH
las funciones en las que Ud. esta pensando no son críticas en cuanto a velocidad, más
aún, alguien puede venir y usando su implementación como diseño de base, lo re-
codifique en C para obtener velocidad extra (si re-codificándolo ello lo hará más
rápido).
Tengo mucho código Clipper, yo puedo donarlo, Que debo
hacer ?
Harbour no es un proyecto para crear un repositorio de código Clipper libre, a menos
que su código directamente implemente una función de libreria de ejecución del
núcleo de Clipper, ésta probabemente no sea de mucho uso en Harbour.Sin embargo,
no deje que su código se desperdicie, por qué no considerar comenzar una librería de
software libre para Clipper, que sea no-compilador específica pero que sea inter-
plataforma y que pueda beneficiar a los programadores usando alguna de las
implementaciones de compiladores de Clipper?
44
Harbour
FWH
45
Harbour
FWH
mailto:harbourusers-request@lists.harbour-project.org?
subject=unsubscribe
harbourtalk (discusion)
List-Unsubscribe:
http://www.matrixlist.com/mailman/listinfo/harbourtalk ,
mailto:harbourtalk-request@lists.harbour-project.org?
subject=unsubscribe
No importa en que lista de correo este Ud., es siempre una buena idea no subscribirse
nunca a menos que Ud. sepa como de-subscribirse. Esto puede ser tan simple como
conservar el mensaje de confirmación que muchas listas envian (ellas a menudo
incluyen información sobre cómo de-subscribirse).
46
Harbour
FWH
47
Harbour
FWH
Instalación de Harbour
48
Harbour
FWH
- djgpp (Delorie GNU C, DOS 32-bit)
- rxs32 (EMX/RSXNT/DOS GNU C, DOS 32-bit)
- watcom (Watcom C++ 9.x, 10.x, 11.x, DOS 32-bit)
Cuando HB_ARCHITECTURE=w32
- bcc32 (Borland C++ 4.x, 5.x, Windows 32-bit)
- gcc (Cygnus/Cygwin GNU C, Windows 32-bit)
- mingw32 (Cygnus/Mingw32 GNU C, Windows 32-bit)
- rxsnt (EMX/RSXNT/Win32 GNU C, Windows 32-bit)
- icc (IBM Visual Age C++, Windows 32-bit)
- msvc (Microsoft Visual C++, Windows 32-bit)
Cuando HB_ARCHITECTURE=linux
- gcc (GNU C, 32-bit)
Cuando HB_ARCHITECTURE=os2
- gcc (EMX GNU C, OS/2 32-bit)
- icc (IBM Visual Age C++ 3.0, OS/2 32-bit)
INCLUDE
Se pueden usar otras variables de entorno para configurar aún más el los
procesos de compilación y linkedición.
Por ej. Setear la variable C_USR para indicar que terminal de video va a usar
el usuario.
PRG_USR Opciones adicionales para el compilador Harbour
C_USR Opciones adicionales para el compilador de C
L_USR Opciones adicionales para el linker
Entonces el archivo (por ejemplo) hb_16bit.bat quedaría:
----------------------------------------------------------
49
Harbour
FWH
SET INCLUDE=c:\tu_compilador_de_c\include;c:\hb034\include
SET LIB=C:\tu_compilador_de_c\lib;
SET HB_ARCHITECTURE=dos
SET HB_COMPILER=djgpp
SET C_USR=-DHARBOUR_USE_DOS_GTAPI
PATH =C:\WINDOWS;c:\tu_compilador_de_c\bin,c:\hb034\bin;
----------------------------------------------------------
50
Harbour
FWH
Consulte Elementos de Harbour
51
Harbour
FWH
O, para ponerlo de otra forma, podrán ser sus aplicaciones más grandes, pequeñas,
lentas, rápidas, sexies, etc... Generalmente, al menos en esta etapa de la vida de
Harbour, cualquier pedazo de código dado que puede ser compilado con Harbour y
con CA-Clipper, sobre la misma máquina y con el mismo entorno (no podría hacerse
una comparación de otra manera, no es cierto?) correrá más lento y probablemente
sea "más grande" cuando es compilado con Harbour.
Lo mismo es probablemente cierto cuando comparamos código compilado con
Harbour con otros compiladores compatibles con Clipper.
Las razones para esto son muchas y variadas y, como son señaladas en muchos
lugares en este documento, Harbour esta todavía en una etapa temprana de su vida y
el continuo desarollo y la compatibilidad con Clipper son de la mayor importancia. La
cuestión de "performance" será tratada cuando sea más apropiado hacerlo, y cuando
la gente este disponible para dedicarse a ello.
Como siempre, si la perfomance de Harbour es un problema para Ud. ahora y Ud.
desea ver que Harbour cumple con sus espectativas entonces, las contribuciones
hablan más fuerte que los test de velocidad.
52
Harbour
FWH
Los desarrolladores de Harbour no hacen ninguna exclamación acerca si Harbour es
mejor ó peor que alguna otra implementación del lenguaje, sin embargo, al mismo
tiempo, cada desarrollador individual probablemente puede cantar loas dependiendo
del area de Harbour donde él haya estado trabajando.
Más importante, pruebe Harbour, decida por sí mismo por qué este tiene ventajas
para Usted.
Qué ventajas tienen otros compiladores de Clipper sobre
Harbour?
Actualmente las ventajas que otros compiladores de Clipper tienen sobre Harbour
son:
Ellos estan disponibles y funcionando (para distintos valores de "funcionando").
Ellos son soportados.
Ellos estan documentados.
Ellos, en algún grado, le dan a Ud. alguien a quien quejarse.
A medida que transcurre el tiempo la mayoría de las ventajas de arriba se irán
acortando, Note que el proceso de documentación esta bien encaminado y que el
soporte es simplemente un envio a comp.lang.clipper. La única ventaja que será difícil
de superar es la última de la lista.
Estoy seguro que los usuarios de otros compiladores, sin mencionar algunos de sus
autores, sienten que hay también otras ventajas. Esto es correcto. Harbour no es un
ejercicio para remover ó reemplazar esos compiladores. Harbour es un esfuerzo para
complementar la lista de compiladores de Clipper con una oferta de software libre.
53
Harbour
FWH
No hay una lista definitiva de las plataformas soportadas debido a que cualquier
plataforma puede ser soportada si alguien es para hacer que Harbour funcione en él.
Al tiempo de escribir esto, Harbour compila y se ejecuta en las siguientes
plataformas: - MS-DOS y Win 3.x (temporariamente fuerra de servicio) - MS-Windows
9x, NT 3,5x, 4.0, Win ME, WWin 2000 - OS/2 - GNU/Linux (todos las distribuciones) <
54
Harbour
FWH
Punteros y Enlaces
La siguiente es una coleción aleatoria de punteros y enlaces que tratan temas
conectados con Harbour y el desarrollo de Harbour recolectados por Dave Pearson.
Los enlaces no aparecen en ningún orden particular y ninguno de los enlaces es en
modo alguno una aprobación al sitio de destino por el equipo de desarrollo de
Harbour.
55
Harbour
FWH
CVS
Introduccióon al CVS por Jim Blandy ,CVS Bubbles, ,CVS--Concurrent Versions
System .
56
Harbour
FWH
En general el término software libre es una frase para describir software que viene
con ciertas libertades, el libre no habla acerca del precio, esto habla acerca de sus
libertades para usar el software. Una sugerencia común es que Ud. piense en "libertad
de palabra" en lugar de "cerveza libre".
Vea http://www.gnu.org/philosophy/free-sw.html para obtener la definición de
"programa libre" de la FSF (Free Software Foundation) Fundación para el software
libre. Un término relacionado es "OpenSource", algo así como código fuente
disponible, Ud. puede encontrar más acerca de la idea de OpenSource en Ud. pudo
también notar que la FSF no considera "OpenSource" y "Free Software" que sean la
misma cosa, vea http://www.gnu.org/philosophy/free-software-for-freedom.html para
más detalles.
Qué es la GPL ?
La GPL es la licencia del sistema GNU, esta es una licencia de software libre. Ud. pudo
también escuchar de ella referida como Copyleft. La GPL es actualmente la licencia
bajo la cual las partes de Harbour son liberadas, otras partes de Harbour estan bajo la
GPL más la excepción de Harbour.
57
Harbour
FWH
solamente una licencia que mantenga a Harbour libre pero que no impacte sobre el
código compilado con Harbour.
"La excepción es que, si Ud. enlaza (link) la Librerías de Harbour con otros
archivos para producir un ejecutable, esto por sí mismo no causa que el
ejecutable resultante sea cubierto por la Licencia Pública General GNU.
El uso de ese ejecutable por parte suya no esta en ninguna forma
restringido, en cuenta del enlazado del código de librería de Harbour dentro
de él.
Esta excepción sin embargo, no invalida algunas otras razones por las cuales
el archivo ejecutable podría estar cubierto por la Licencia Pública General
GNU.
Esta excepción se aplica: solamente al código liberado por el Proyecto
Harbour bajo el nombre "Harbour". Si Ud. copia código desde otro Proyecto
Harbour ó desde alguna liberación de la Fundación de Software Libre,
dentro de una copia de Harbour, tal como la Licencia Pública General lo
permite, la excepción no se
aplica al código que Ud. agrega de esta forma.
Para evitar engañosa alguien con el estado de estos archivos modificados,
Ud. debe borrar el aviso de excepción de ellos.
58
Harbour
FWH
Si Ud. escribe modificaciones de su propia creación para Harbour, es su
elección, cuándo permitir que esta excepción se aplique a sus
modificaciones. Si Ud. no desea eso, borre el aviso de excepción."
Por favor note que la escritura original de la excepción estaba basada en una versión
anterior de la excepción de guile. Aquella versión de la excepción usaba menos
palabras y era menos clara. Las palabras de aquella versión eran:
"La excepción es que si Ud. enlaza (link) la Librería de Ejecución Harbour (HRL
= Harbour Runtime Library) y/o la Máquina Virtual Harbour (HVM = Harbour
Virtual Machine) con otros archivos para producir un ejecutable, esto por sí
mismo no causa que el ejecutable resultante sea cubierto por la Licencia
Pública General (GNU). Su uso de ese ejecutable no esta en ninguna forma
restringido en cuenta del enlazado de la HRL y/o del código HVM dentro de él."
Los fuentes de Harbour están siendo convertidos a la nueva excepción a medida que
las personas que mantienen derechos de autor sobre esos fuentes, hagan los
cambios. La intención es que cada porción de los fuentes que haga uso de la
excepción de harbour use la versión más explicativa.
Como se señaló anteriormente, el enunciado de la excepción de la elección actual de
la licencia puede cambiar en algún punto en el futuro.
8.6 Entonces por qué Uds. no usan la LGPL ?
Dada la situación de arriba puede ser razonable preguntar por qué los desarrolladores
de Harbour no eligieron usar la LGPL en su lugar ?. a razón simplemente viene de los
requerimientos de la LGPL y que pueden ser razonablemente preguntado a cualquiera
quien desee hacer uso de Harbour.
La LGPL requiere que cualquier distribución binaria del código LGPLd (en otras
palabras, una aplicación compilada con Harbour y enlazada contra la HVM y RTL)
debería ser distribuido en un método que permita al usuario re-enlazar (re-link) la
aplicación contra diferentes y/o copias posteriores del código bajo la LGPL. Este es un
requerimiento irrazonable e impracticable tanto que los desarrolladores de Harbour
estan preocupados. Para la mayor parte, esto podría estar bién en plataformas donde
una aplicación puede ser enlazada contra una versión dinámica de la VM y la RTL pero
algunas plataformas que no soportan el enlazado dinámico (PC/MS/DR/ Open/Free-
DOS por ejemplo) podrían efectivamente ser impedidos del uso de Harbour. Los
desarrolladores de Harbour consideran que esto es una reducción a la libertad y esto
no es aceptable para el software libre.
59
Harbour
FWH
posibilidades que algún item del código pueda no haber sido licenciado correctamente
y, que en teoría pueda tener implicaciones para Ud. y su software.
Si Ud. advierte que esto ha pasado, hágalo saber a los desarrolladores y esto será
corregido.Este seguro que no es la intención de los desarrrolladores de Harbour que
sus aplicaciones tengan que ser liberadas como software libre. El soporte de software
libre podría ser la cosa correcta a hacer pero los desarrrolladores de Harbour han
decidido no insistir con esto. Nosotros pensamos que es más util en esta situación
establecer la licencia final para que ellos no pongan ninguna condicion sobre el
estado de su trabajo que use Harbour.
Por favor recuerde que la GLP realmente sólo lo afecta a Ud. cuando Ud. distribuye
versiones binarias del código GPLd, en este caso, La HVM y la RTL son enlazados
dentro de su aplicación. Esto es así porque Harbour no esta ni siquiera en la etapa
beta, Ud. no debería considerar la idea de distribuir aplicaciones compiladas con
Harbour.
En resumen, Harbour usará post-beta una licencia que no afectará en ninguna forma
sus aplicaciones. Por el momento esta podría afectar sus aplicaciones si y sólo si
Ud. las distribuye como binarios que han sido compilados con Harbour. Esto
debe verse como una característica y no como un defecto. Aún entonces, Ud, puede
ayudar revisando la licencia y reportando a los desarrolladores cualquier ambiguedad
que Ud. Detecte
Como siempre, no acepte la palabra de cualquiera en esta materia, cuando esté en
duda, lea la licencia. Si Ud.todavía esta en duda pague a alguien quien sepa lo que
esta haciendo para que lea la licencia por Ud.
60
Harbour
FWH
Ud. debería haber recibido una copia de la Licencia Pública General (GNU) junto con
este programa; si no, escriba a la Fundación de Software Libre Free Software
Foundation, Inc.,675 Mass Ave Cambridge, MA 02139, USA (o visite su sitio Web en
http://www.gnu.org/).
Garantía
Actualmente la sentencia de garantía esta provista por la GPL: "Este programa es
distribuido con la esperanza que le pueda ser útil, pero SIN NINGUNA GARANTIA; aún
sin la garantía implícita de COMERCIALIZACION O DESTINO PARA ALGÚN PROPÓSITO
PARTICULAR."
Marcas Registradas
Esta documentación hace a varias Marcas Registradas, que sólo son usadas con
propósito de referencia.
61
Harbour
FWH
Glosario
A
ADS:
Acrónimo de Advanced Database Server. Solución cliente / servidor.
B
BISON:
Es un generador de analisis de propósito general que convierte una descripción de
gramatica para una gramática de libre-contexto LALR en un programa en lenguaje C
para analizar esa gramática.Una vez que Ud. es hábil con con Bison, Ud. puede usarlo
para desarrollar un amplio rango de analizadores de lenguaje, desde aquellos usados en
simples calculadoras de escritorio hasta complejos lenguajes de programación. Bison
tiene compatibilidad hacia arriba con Yacc: toda gramática Yacc apropiadamente-escrita
debe trabajar con Bison, sin hacer ningún cambio. Cualquiera familiarizado con Yacc
debería ser capaz de usar Bison con pocos problemas. Ud necesita ser avanzado
programador de C como condicion para usar Bison. Un manual en-linea esta disponible
en www.gnu.org/manual/bison/index.html
Branch:
Rama, bifurcacion en la versión del proyecto.
C
Cygnus:
Cygnus es una empresa que se hizo popular por el port de las herramientas GNU para
Un*x al ambiente MS-Windows. Posteriormente fue comprada por Red Hat y sigue
operando como parte de esta.
Cygwin:
GNU + Cygnus + Windows = Cygwin Las herramientas Cygwin son una migracion de la
populares herramientas y utilidades GNU al entorno de desarrollo para Windows 95, 98,
y NTEllas funcionan usando la librería Cywin la cual provee una API simil-UNIX en el
tope de Win32Cygwin fue originalmente diseñado e implementado por Steve
Chamberlain cuando el trabajaba para Cygnus. Actualmente el grupo Cygwin en Red
Hat, Inc. consiste primariamente de tres personas: Christopher Faylor (encargado),
Corinna Vinschen (ingeniera senior), DJ Delorie (ingeniero senior, voluntario interno del
grupo gcc). a página principal del proyecto Cygwin esta en: http://cygwin.com/ Ud. puede
encontrar documentación pararramientas individuales GNUen:http://www.fsf.org/manual/
CVS:
62
Harbour
FWH
Acrónimo de Current Version System, Sistema de Control de Versiones Sistema
compuesto por una serie de programas que permite a los desarrolladores mantener el
control sobre los distintos archivos y las modificaciones que se realizan a ellos.
D
Diff:
Diferencias entre una versión y otra del software.
E
F
Flex:
Flex es una herramienta para generar exploradores: programas cuales reconocen
patrones lexicos en un texto. flex lee los archivos de entrada provistos, o su entrada
estandar si no se da ningun nombre de archivo, para una descripcion del explorador a
generar. La descripcion es en la forma de pares de expresiones regulares y código C
llamado reglas.
Flex genera como salida un archivo fuente en C, llamado "lex.yy.c" el cual define a una
rutina "yylex()".Este archivo es compilado y enlazado con la librería "-lfl" para producir un
ejecutable. Cuando el ejecutable esta corriendo, este analiza sus entradas en búsqueda
de ocurrencias de expresiones regulares.Cuando encuentra una, este ejecuta el código
C correspondiente.
FSF:
Acrónimo de Free Software Foundation ó Fundacíon para el software libre
G
GCC:
Acrónimo de GNU C Compiler, compilador de lenguaje C de libre distribución, bajo
licencia GNU. Actualmente el término debe leerse como GNU Compiler Collection.
Nota:
EGCS fué una etapa experimental en el desarrollo de GCC, (el compilador de C GNU),
una rama que se excindio debido a la discrepancia de sus integrantes. Consulte el sitio
web gcc/egcs para más información: http://gcc.gnu.org Alrededor de Abril de 1999 el
proyecto GCC de la FSF, fue unificado con EGCS y el resultado es la version gcc-2.95
liberado el 31 de Julio de 1999. l proyecto ha sido renombrado Gnu Compiler Colection ó
GCC ó Colección de compiladores GNU. El resultado de todo esto es que, lo que era
egcs-1.2 esencialmente se convirtió en gcc-2.95. Los términos Cygwin, Mingw32, EGCS,
UWIN se refieren a distintos enfoques en la migración de GCC a la plataforma x86-win32
(intel).Enfoques en el sentido que ellos comparten casi todo el backend, y usan el mismo
formato de ejecutable y el subyacente sistema operativo windows32, excepto que el
entorno de ejecución es radicalmente distinto.
zGPL:
63
Harbour
FWH
Licencia Pública General GNU (GPL)
GT - GT System:
Acrónimo de General Terminal (sistema de Terminal de uso General)Clipper posee un
sistema multinivel para controlar la pantalla y el teclado. El GT constituye el nivel
superior del sistema de Entrada / Salida de Clipper. En un nivel inferior se encuentra el
controlador de terminal.
H
Harbour:
Compilador de XBase, similar a CA-Clipper (MR), diseñado para trabajar en distintas
plataformas: DOS, Win 95, 98, ME, NT 3.5x, 4.0, W2K, OS/2, Linux, etc
I
IDEA:
Algoritmo de encriptación ampliamente usado.
J
JAVA:
Lenguaje de programación multiplataforma desarrollado por SUN Systems basado en
bytecodes como Harbour.
K
Kernel: (núcleo)
1. La parte esencial de Unix u otro sistema operativo, responsable de la adjudicación
de recursos, interfaz de bajo-nivel con el hardware, seguridad, etc.
2. Una parte esencial de un lenguaje de programación, en términos de la cual otras
construcciones son (ó podrían ser) definidas.
L
Lex:
Lex es una herramienta para generar exploradores.Consulte FLex.
M
Mingw:
MinGW: Acrónimo de Minimalist GNU for Windows.MinGW es un conjunto de archivos
include y librerías import que permiten que un programa en modo-consola pueda usar la
librería de ejecución estándar de C, MSVCRT.DLL (disponible para todos los sistemas
NT y versiones de Windows posteriores a 95 (para la cual hay una versión diferente).
Usando esta librería básica en tiempo de ejecución, Ud. puede escribir programas ANSI
compatible en modo consola, usando GCC y usando usando alguna de las extensiones
ofrecidas por la librería MS C runtime, pero no pueden usarse las características
provistas por la API Windows32.
N
O
64
Harbour
FWH
OOP:
Acrónimo de Object Oriented Programming. ó Programación Orientada a Objetos.
P
Patch:
Parche, programa utilizado para actualizar otro programa a una version actualizada.
Q
R
RDD:
Acrónimo de Replaceble Database Driver (Controlador de Bases de Datos
Reemplazable). Los más usados son el RDD para archivos NTX, CDX, MDX, etc
RTL: (RTL = RunTime Library) o la Librería de Ejecución de Harbour, la cual contiene
funciones equivalentes a CLIPPER.LIB, EXTEND.LIB, etc.
S
snapshot:
Instantánea del CVS. Todos los archivos que forman parte del proyecto en un
momento dado.
SSH:
Abreviatura de Secure SHell . (entorno seguro).Es un programa ejecutable para
logonearse a otra computadora sobre una red, para ejecutar comandos en una
máquina remota, para borrar, mover, etc, archivos desde una máquina a otra. Este
programa provee confiable autenticación y comunicaciones seguras sobre canales
inseguros como internet. Para ello toda la sesión de conexión (login), incluyendo la
transmisión de la password, es encriptada haciendo casi imposible para un hacker
obtener nuestra password. El programa puede utilizar los algoritmos 'DES', 'IDEA',
'3DES', 'RSA', etc.El programa SSH está disponible para Windows, Unix, Macintosh, y
OS/2 y se lo puede obtener en forma gratuita.
T
Terminal:
También llamado controlador Terminal, esta formado por un controlador de pantalla y
de teclado que se comunica con el dispositivo de Entrada / Salida a través del Sistema
Operativo, ó directamente con el hardware (si el sistema operativo lo permite). Con
C52 vienen 4 controladores de terminal: TERMINAL, ANSITERM, NOVTERM, y PCBIOS.
Por defecto C52 enlaza automáticamente con cada programa TERMINAL.LIB (terminal
diseñado para trabajar con ordenadores IBM y ordenadores 100% compatibles) si no
se especifica un controlador alternativo.
U
V
VM:
65
Harbour
FWH
Abreviatura de Virtual Machine (Máquina Virtual). (HVM = Harbour Virtual Machine) ó
Máquina Virtual de Harbour.
W
Wrapper: (envoltura)
El término tipicamente se utiliza para funciones ó procedimientos. "wrapper function"
ó función de envoltura.
Codigo, el cual es combinado con otra pieza de codigo para determinar como ese
codigo es ejecutado. La envoltura actúa como una interfaz entre el llamador y el
codigo envuelto. sto puede ser hecho por compatibilidad. Por ej. si el codigo envuelto
es en un lenguaje de programación diferente ó usa diferentes convenciones de
llamada ó por seguridad por ej. para evitar que el programa llamador ejecute ciertas
funciones. Esto implica que ese codigo envuelto solamente puede ser accedido via la
envoltura ó "wrapper"
X
X Windows:
Sistema gráfico de ventanas para la plataforma Un*x. Este entorno gráfico es
independiente del sistema operativo y su instalación es opcional. Es de bajo nivel y sobre
él corren los administradores de escritorio como GTK+, y Enlightning.
Y
Yacc:
Es un generador de analisis de propósito general que convierte una descripción de
gramatica para una gramática de libre-contexto LALR en un programa en lenguaje C
para analizar esa gramática. Yacc lee la especificación de la gramática del archivo
"filename" y genera un LR(1) analizador para el. Los analizadores consisten en un set de
LALR(1) tablas de analisis y una rutina controladora escrita en el lenguale de
programación C. Yacc normalmente escribe las tablas de analisis y la rutina controladora
al archivo y.tab.c. El programa Yacc ha ido siendo reemplazado por Bison.
Z
ZLIB:
Librería de compresión de archivos que utiliza el popular formato zip.
CA-Clipper © es Marca Registrada de Computer Associates Inc. Unix © es Marca Registrada de Unixware
Co. Cygwin © es Marca Registrada de Red Hat Inc. Windows © es Marca Registrada de Microsoft
Corporation.
66