Clipper On Line • Ver Tópico - Qual a última versão do Harbour 3.2?

Qual a última versão do Harbour 3.2?

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Qual a última versão do Harbour 3.2?

Mensagempor JoséQuintas » 01 Nov 2021 16:57

Kapiaba escreveu:Em tempo: Sou moderador do Forum Inter. Ai, o senhor "quebra" as minhas pernas, tenho FiveWin oficial que ganhei até do Gilmer Tavares.


Não foi intenção dizer que usa pirata, foi só um complemento talvez desnecessário, ou talvez de alerta para outros.

Aproveitando...

Tem a versão antiga 6.12 que foi liberada geral.
Fiz uma postagem, mas não sei se me entenderam no fórum internacional:
Perguntei sobre deixar ESSA VERSÃO, compilada, e liberada geral, no GITHUB.
A idéia era justamente complementar com o Harbour/XHarbour e deixar toda parte de HBMK2 funcionando pro fivewin.
Apesar de antigo, seria uma boa forma de encher de exemplos práticos sobre o uso.

Aliás.... acabou me lembrando uma coisa....
Parte dos fontes do fivewin ficam liberados pra quem quiser olhar.
Pode ter alguma coisa que ajude nas outras LIBs.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Itamar M. Lins Jr. » 01 Nov 2021 17:30

Olá!
Não entendi nada...

A versão(manutenção) do Harbour é no GIT o pessoal faz uma cópia para o SVN, não reparei se eles copiam os fontes.
Antes era no SVN, mas mudaram para o GIT, eu só uso o GIT pq no SVN ninguém mexe mais.
A coisa mais recente nele é de 6 meses atrás, que é o arquivo ChangeLog.Txt,

Porquê é isso mesmo, o Harbour 3.2 está parado mais tempo que a versão 3.4, No 3.2 só fizeram meia dúzia de correções e atualizações esse tempo todo no SVN não tem nada. Só o .EXE que é gerado automático do GIT, sem atualização nenhuma também.

Onde vocês pegam essas LIBS do harbour quando precisar atualizar?

Passarinho muito tempo preso em gaiola, quando livre não sabe voar, tem que reaprender.
Isso nós mesmo é que criamos, não pegamos nem dependemos de ninguém, temos acesso aos fontes do Harbour, entre outras ferramentas.
Escolhemos se queremos BCC, GCC, MVC Visual C,C++ da Microsoft, Pelles C; Tem C até da INTEL.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Itamar M. Lins Jr. » 01 Nov 2021 17:34

Olá!
Atualizei aqui o mod_harbour do Antonio Linares
C:\dev\mod_harbour>git pull
remote: Enumerating objects: 245, done.
remote: Counting objects: 100% (245/245), done.
remote: Compressing objects: 100% (197/197), done.
remote: Total 217 (delta 139), reused 27 (delta 16), pack-reused 0
Receiving objects: 100% (217/217), 15.77 MiB | 6.08 MiB/s, done.
Resolving deltas: 100% (139/139), completed with 24 local objects.
From https://github.com/FiveTechSoft/mod_harbour
   2ad066c7..8ecab320  master     -> origin/master
* [new tag]           4.0        -> 4.0
Updating files: 100% (39/39), done.
Updating 2ad066c7..8ecab320
Fast-forward
IIS/go64.bat                            |     2 +-
IIS/go64ads.bat                         |     3 +-
IIS/libharbour.dll                      |   Bin 6816768 -> 6807040 bytes
IIS/libharbour_ads.dll                  |   Bin 0 -> 6899200 bytes
IIS/msvc/x64/Release/ace64.dll          |   Bin 0 -> 1757136 bytes
IIS/msvc/x64/Release/adsloc64.dll       |   Bin 0 -> 2418640 bytes
IIS/msvc/x64/Release/aicu64.dll         |   Bin 0 -> 2696656 bytes
IIS/msvc/x64/Release/libharbour.dll     |   Bin 0 -> 6807040 bytes
IIS/msvc/x64/Release/mod_harbour.dll    |   Bin 49152 -> 49152 bytes
cgi/source/in.prg                       |    22 +-
cgi/source/out.prg                      |    18 +-
nginx/go.bat                            |     2 +-
nginx/ngx_mod_harbour.c                 |    21 +-
nginx/readme.md                         |    17 +
samples/testhrb.prg                     |     1 +
source/apache.prg                       |     3 +-
source/mod_harbour.c                    |     6 +-
uhttpd/go32.bat                         |     3 +
uhttpd/index.prg                        |     5 +
uhttpd/libeay32MD.lib                   |   Bin 0 -> 19929660 bytes
uhttpd/modharbour.exe                   |   Bin 0 -> 1644032 bytes
uhttpd/modharbour.hbp                   |     7 +
uhttpd/modharbour.prg                   |   124 +
uhttpd/ssleay32MD.lib                   |   Bin 0 -> 3702378 bytes
windows/win32/readme.md                 |     6 +
windows/win32/required/libeay32.dll     |   Bin 0 -> 1099776 bytes
windows/win32/required/libssl2.zip      |   Bin 0 -> 120828 bytes
windows/win32/required/readme.md        |     1 +
windows/win32/required/ssleay32.dll     |   Bin 0 -> 237568 bytes
windows/win64/ads/ace64.dll             |   Bin 0 -> 1757136 bytes
windows/win64/ads/adsloc64.dll          |   Bin 0 -> 2418640 bytes
windows/win64/ads/aicu64.dll            |   Bin 0 -> 2696656 bytes
windows/win64/ads/libcrypto-1_1-x64.dll |   Bin 0 -> 3404288 bytes
windows/win64/ads/libcurl-x64.dll       |   Bin 0 -> 1102968 bytes
windows/win64/ads/libssl-1_1-x64.dll    |   Bin 0 -> 682496 bytes
windows/win64/mod_harbour.so            |   Bin 92672 -> 92672 bytes
windows/win64_dbwin32/DBWIN32.exe       |   Bin 0 -> 81920 bytes
windows/win64_dbwin32/libharbour.dll    |   Bin 0 -> 7109632 bytes
windows/win64_dbwin32/readme.md         | 19683 ++++++++++++++++++++++++++++++
39 files changed, 19902 insertions(+), 22 deletions(-)
create mode 100644 IIS/libharbour_ads.dll
create mode 100644 IIS/msvc/x64/Release/ace64.dll
create mode 100644 IIS/msvc/x64/Release/adsloc64.dll
create mode 100644 IIS/msvc/x64/Release/aicu64.dll
create mode 100644 IIS/msvc/x64/Release/libharbour.dll
create mode 100644 uhttpd/go32.bat
create mode 100644 uhttpd/index.prg
create mode 100644 uhttpd/libeay32MD.lib
create mode 100644 uhttpd/modharbour.exe
create mode 100644 uhttpd/modharbour.hbp
create mode 100644 uhttpd/modharbour.prg
create mode 100644 uhttpd/ssleay32MD.lib
create mode 100644 windows/win32/required/libeay32.dll
create mode 100644 windows/win32/required/libssl2.zip
create mode 100644 windows/win32/required/readme.md
create mode 100644 windows/win32/required/ssleay32.dll
create mode 100644 windows/win64/ads/ace64.dll
create mode 100644 windows/win64/ads/adsloc64.dll
create mode 100644 windows/win64/ads/aicu64.dll
create mode 100644 windows/win64/ads/libcrypto-1_1-x64.dll
create mode 100644 windows/win64/ads/libcurl-x64.dll
create mode 100644 windows/win64/ads/libssl-1_1-x64.dll
create mode 100644 windows/win64_dbwin32/DBWIN32.exe
create mode 100644 windows/win64_dbwin32/libharbour.dll
create mode 100644 windows/win64_dbwin32/readme.md


Além dos fontes ele libera as DLLs e .EXE a gente não precisa nem compilar, embora ele também deixe os fontes acessíveis.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Itamar M. Lins Jr. » 01 Nov 2021 17:49

Olá!
Piorou o Xharbour que está parado há mais de 6 anos!
2020-12-12  14:20 UTC-0300  Luiz Rafael Culik <luiz@xharbour.com.br>
  * source\ct\dattime3.c
  * source\ct\settime.c
     * added #define _DEFAULT_SOURCE necessay in new Linux distors
      Borrow from harbour
  * source\rtl\arc4.c
    * updated to the current state of glibc, versions >= 2.30 have
      no sysctl(). Should fix build issues on current Linux distros
      like Fedora 33, etc.    Borrow from harbour


Ultimas atualizações no SVN.
O xHarbour AINDA usa SVN.
Reparem que não é uma atualização própria do xHarbour, mas sim uma cópia do Harbour, (BORROWED FROM HARBOUR)
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Jairo Maia » 02 Nov 2021 03:27

Itamar M. Lins Jr. escreveu:Porquê é isso mesmo, o Harbour 3.2 está parado mais tempo que a versão 3.4
Pois é exatamente isso que não entendo. Baixei na semana passada o harbour 3.2 desse link: https://sourceforge.net/projects/harbour-project/. A data dele é de 28/04/2021.

Nesse momento tem uma versão que foi postada há 2 horas atrás. Se todos dizem que está parado há muito tempo, porque sempre tem atualização na versão nightly (noturna)? Isso não entendo.

PS: Na atualização que fiz na semana passada, o que notei é que a velocidade de compilação aumentou. O tempo para compilar um sistema com -rebuild por exemplo, ficou bem menor.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Itamar M. Lins Jr. » 02 Nov 2021 08:38

Olá!
C:\dev>harbour -build
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/

Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2104281802)
Compiler: MinGW GNU C 7.3 (32-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2021-04-28 20:02 UTC+0200 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: 4643587824552fd877e7f02ad11596e0b30c465d
Built on: Nov  2 2021 05:07:26
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------


Veja ai. Deve ser impressão sua ou o windows que fica um dia lento outro rápido com as atualizações de fundo.
Eu mesmo uso GCC 10.3 o do SVN ainda está na versão 7.3
Pelo Changelog não tem nada só fica recompilando os fontes automaticamente todo dia sem nada nem versões do GCC eles mexem.
versão que foi postada há 2 horas atrás.

Copiada e gerada, mas os fontes são velhos. Built on: Nov 2 2021 05:07:26

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Kapiaba » 02 Nov 2021 10:35

Bom dia. Meu muito obrigado a todos. Já consegui compilar com o HARBOUR. Deu algumas incompatibilidades de comandos entre o xHarbour e o Harbour, mas já foram todos resolvidos. Agora, posso compilar com qualquer um dos dois sem problemas. Como disse, a única coisa que notei de diferente entre eles, foi a velocidade do .EXE, que o gerado com o xHarbour é bem mais veloz, e o NOME de alguns comandos do HARBOUR que são diferentes no xHarbour, de resto, posso dizer que estou "ilimitado", pois posso compilar no que eu quiser. kkkkkkkkkkkkkk

PLENO_HARBOUR.png


Thanks to all.

Regards, saludos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Qual a última versão do Harbour 3.2?

Mensagempor JoséQuintas » 02 Nov 2021 10:55

Rápido assim?
Tem coisa errada kkkk

No XHarbour ele manteve o mesmo nome de funções, e acrescentou recursos.
No Harbour, as funções Clipper são compatíveis, e ele usa um novo nome pra função alterada.

Que eu me lembre:

ASCan() => hb_ASCan()
ADel() => hb_ADel()
MemoWrit() => hb_MemoWrit()
At() => hb_At()

No Clipper, AScan() NÃO aceita codeblock como segundo parâmetro, mas hb_AScan() sim e provavelmente o do XHarbour
No Clipper, At() NÃO aceita definir posição, mas hb_At() sim e provavelmente o do XHarbour
No Clipper, MemoWrit() grava sempre em formato DOS, diferente de hb_MemoWrit() e do XHarbour que aceita parâmetro extra
No Clipper, ADel() não aceita parâmetros que hb_ADel() aceita, e provavelmente XHarbour também

Mesmo que compile com Harbour, não significa que fontes com essas partes irão funcionar direito.
Apenas fique atento.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Qual a última versão do Harbour 3.2?

Mensagempor JoséQuintas » 02 Nov 2021 11:04

Apenas complemento:

Por exemplo: ADel( array, elemento, .T. ), MemoWrit( arquivo, texto, .t. )

O alerta do parâmetro a mais na compilação ajuda a resolver.
Só não lembro se o Harbour avisa sempre, ou se só avisa na compilação -w3 -es2
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Qual a última versão do Harbour 3.2?

Mensagempor JoséQuintas » 02 Nov 2021 11:16

Jairo Maia escreveu: Se todos dizem que está parado há muito tempo, porque sempre tem atualização na versão nightly (noturna)? Isso não entendo.


Existe uma compilação automática feita toda noite, não importa se tem ou não alterações

Itamar M. Lins Jr. escreveu:Porquê é isso mesmo, o Harbour 3.2 está parado mais tempo que a versão 3.4


Depende do ponto de vista.

A Europa não fica sem o símbolo do euro, no Harbour 3.2 tem essa alteração, mas no Harbour 3.4 NÃO.
O Prmezek alterou variáveis PUBLIC e PRIVATE pra praticamente ilimitadas, o Harbour 3.4 NÃO tem essa alteração.

O Harbour 3.4 está parado e desatualizado, parou ANTES DO 3.2.

Certas correções e ajustes do 3.4 não foram feitos no 3.2, e de vez em quando alguém "puxa" as alterações do 3.4 para o 3.2.

Mas tem quem mexa no 3.2, e não tem ninguém mexendo no 3.4, exceto pequenos ajustes de HTML, já que toda documentação vém do 3.4.

Daí pra dizer que o 3.2 parou antes do 3.4..... a diferença é grande.

EU USO O HARBOUR 3.4.
Prefiro ele.
Mas sei que ele parou em 2017, há quatro anos, e o Harbour 3.2 continua recebendo atualizações, muito poucas, mas continua recebendo.

O núcleo alterado pra variáveis ilimitadas.....
Não é qualquer um que vai conseguir fazer isso no 3.4.
Mas também não é qualquer um que vai precisar disso.... só quem tem um supercomputador com 1.000 GB de memória ou mais...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Kapiaba » 02 Nov 2021 11:47

Mister Quintas, no meu caso, como escrevo na simplicidade do CLIPPER 5.3 e do
xHarbour, foi tranquila a migração, bastando na maioria dos casos, incluir
o HBCOMPAT.CH. Não tive maiores problemas, e é vasta as respostas para a
maioria das dúvidas de migração de xHarbour para HARBOUR em Fivewin.
Para quem já está acostumado com o FiveWin, é mamão com açucar.
Não tive nenhum trauma Mister Quintas.

Por exemplo:

#ifndef __XHARBOUR__

FUNCTION DbSkipper( n ) ; RETURN __DbSkipper( n )  // Harbour

FUNCTION DbPack() ; RETURN __DbPack()  // Harbour

FUNCTION DbZap() ; RETURN hb_DbZap()  // Harbour

FUNCTION CurDrive( x ) ; RETURN hb_CurDrive( x )  // Harbour

#EndIf

/*
* $Id: hbcompat.ch 18716 2012-12-03 13:52:22Z vszakats $
*/

/*
* Harbour Project source code:
* Header file for cross-compatibility between different Harbour flavours
*
* Copyright 1999-2009 {list of individual authors and e-mail addresses}
* www - http://harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING.txt.  If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour.  If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way.  To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/

#ifndef HBCOMPAT_CH
#define HBCOMPAT_CH

#ifdef __HARBOUR__

#include "hbgtinfo.ch"
#include "hbgfx.ch"

#ifdef __XHARBOUR__

   #if defined( __PLATFORM__Windows ) .AND. ! defined( __PLATFORM__WINDOWS )
      #define __PLATFORM__WINDOWS
   #endif
   #if defined( __PLATFORM__Linux ) .AND. ! defined( __PLATFORM__LINUX )
      #define __PLATFORM__LINUX
   #endif

   #xtranslate hb_gtInfo( HB_GTI_INKEYREAD [, <x>] )   => SetInkeyBeforeBlock( [<x>] ) <-x->
   #xtranslate hb_gtInfo( HB_GTI_INKEYFILTER [, <x>] ) => SetInkeyAfterBlock( [<x>] ) <-x->

   #xtranslate hb_ScrMaxRow()                  => gtInfo( HB_GTI_SCREENHEIGHT )
   #xtranslate hb_ScrMaxCol()                  => gtInfo( HB_GTI_SCREENWIDTH )
   #xtranslate MaxRow( .T. )                   => gtInfo( HB_GTI_SCREENHEIGHT )
   #xtranslate MaxCol( .T. )                   => gtInfo( HB_GTI_SCREENWIDTH )
   #xtranslate hb_keyNext( [<x>] )             => NextKey( <x> )

   #xtranslate hb_osNewLine()                  => hb_eol()
   #xtranslate hb_osPathSeparator()            => hb_ps()

   #xtranslate hb_dbPack()                     => __dbPack()
   #xtranslate hb_dbZap()                      => __dbZap()
   #xtranslate hb_dbDrop( [<x,...>] )          => dbDrop( <x> )
   #xtranslate hb_dbExists( [<x,...>] )        => dbExists( <x> )
   #xtranslate hb_FieldLen( [<x>] )            => FieldLen( <x> )
   #xtranslate hb_FieldDec( [<x>] )            => FieldDec( <x> )
   #xtranslate hb_FieldType( [<x>] )           => FieldType( <x> )

   #xtranslate hb_processOpen( [<x,...>] )     => hb_OpenProcess( <x> )
   #xtranslate hb_processClose( [<x,...>] )    => hb_CloseProcess( <x> )

   #xtranslate hb_IsRegex( [<x>] )             => hb_IsRegexString( <x> )
   #xtranslate hb_MethodName( [<x,...>] )      => MethodName( <x> )
   #xtranslate hb_libLoad( [<x,...>] )         => LibLoad( <x> )
   #xtranslate hb_libFree( [<x,...>] )         => LibFree( <x> )
   #xtranslate hb_Adler32( [<x,...>] )         => hb_Checksum( <x> )
   #xtranslate hb_keySetLast( [<x,...>] )      => hb_SetLastKey( <x> )
   #xtranslate hb_CStr( [<x,...>] )            => CStr( <x> )
   #xtranslate hb_ValToExp( [<x,...>] )        => ValToPrgExp( <x> )
   #xtranslate hb_rddInfo( [<x,...>] )         => rddInfo( <x> )
   #xtranslate hb_idleSleep( [<x,...>] )       => SecondsSleep( <x> )
   #xtranslate hb_UserName()                   => NetName( 1 )
   #xtranslate hb_FSize( <x> )                 => FileSize( <x> )
   #xtranslate hb_WildMatch( [<x,...>] )       => WildMatch( <x> )
   #xtranslate hb_bitTest( [<x,...>] )         => hb_bitIsSet( <x> )
   #xtranslate hb_Deserialize( <x> )           => hb_DeserialNext( <x> )

   #xtranslate hb_HexToNum( [<c,...>] )        => HexToNum( <c> )
   #xtranslate hb_NumToHex( [<n,...>] )        => NumToHex( <n> )
   #xtranslate hb_HexToStr( [<c,...>] )        => HexToStr( <c> )
   #xtranslate hb_StrToHex( [<c,...>] )        => StrToHex( <c> )

   #xtranslate hb_AScan( [<x,...>] )           => AScan( <x> )
   #xtranslate hb_RAScan( [<x,...>] )          => RAScan( <x> )
   #xtranslate hb_AIns( [<x,...>] )            => AIns( <x> )
   #xtranslate hb_ADel( [<x,...>] )            => ADel( <x> )
   #xtranslate hb_At( [<x,...>] )              => At( <x> )

   #xtranslate hb_DateTime( [<x,...>] )        => DateTime( <x> )
   #xtranslate hb_Hour( [<x>] )                => Hour( <x> )
   #xtranslate hb_Minute( [<x>] )              => Minute( <x> )
   #xtranslate hb_TToS( [<x>] )                => TToS( <x> )
   #xtranslate hb_SToT( [<x>] )                => SToT( <x> )
   #xtranslate hb_TToC( [<x,...>] )            => TToC( <x> )
   #xtranslate hb_CToT( [<x,...>] )            => CToT( <x> )

   #xtranslate hb_GetEnv( [<x,...>] )          => GetEnv( <x> )
   #xtranslate hb_SetKey( [<x,...>] )          => SetKey( <x> )

   #xtranslate hb_i18n_gettext( <x> )          => i18n( <x> )

   #xtranslate hb_cdpSelect( [<x,...>] )       => hb_SetCodepage( <x> )

   #xtranslate hb_argv( [<x,...>] )            => hb_CmdArgArgV( <x> )

   #xtranslate hb_iniSetComment( [<x,...>] )   => hb_SetIniComment( <x> )
   #xtranslate hb_iniRead( [<x,...>] )         => hb_ReadIni( <x> )
   #xtranslate hb_iniWrite( [<x,...>] )        => hb_WriteIni( <x> )

   #xtranslate hb_DisableWaitLocks( [<x>] )    => DisableWaitLocks( <x> )

   #xtranslate hb_gtLock()                     => hbConsoleLock()
   #xtranslate hb_gtUnlock()                   => hbConsoleUnlock()

   /* MT functions */
   #xtranslate hb_mtvm()                       => hb_MultiThread()
   #xtranslate hb_threadSelf()                 => GetCurrentThread()
   #xtranslate hb_threadID( [<x,...>] )        => GetThreadId( <x> )
   #xtranslate hb_threadStart( <x,...> )       => StartThread( [<x>] )
   #xtranslate hb_threadJoin( <x> )            => JoinThread( <x> )
   #xtranslate hb_threadQuitRequest( <x> )     => KillThread( <x> )
   #xtranslate hb_threadWaitForAll()           => WaitForThreads()
   #xtranslate hb_threadTerminateAll()         => KillAllThreads()

//   #xtranslate hb_mutexNotify( <x,...> )       => Notify( <x> )
//   #xtranslate hb_mutexNotifyAll( <x,...> )    => NotifyAll( <x> )

   #xtranslate hb_mutexSubscribe( <x,...> )    => {| mtx, nTimeOut, xSubscribed | ;;
                                                  LOCAL lSubscribed ;;
                                                  xSubscribed := Subscribe( mtx, ;
                                                                            iif( HB_ISNUMERIC( nTimeOut ), nTimeOut * 1000, ), ;
                                                                            @lSubscribed ) ;
                                                  RETURN lSubscribed ; }:eval( <x> )
   #xtranslate hb_mutexSubscribeNow( <x,...> ) => {| mtx, nTimeOut, xSubscribed | ;;
                                                  LOCAL lSubscribed ;;
                                                  xSubscribed := SubscribeNow( mtx, ;
                                                                               iif( HB_ISNUMERIC( nTimeOut ), nTimeOut * 1000, ), ;
                                                                               @lSubscribed ) ;
                                                  RETURN lSubscribed ; }:eval( <x> )

   #xtranslate hb_mutexLock( <x>, <n> )        => iif( ! HB_ISNUMERIC( <n> ), hb_mutexLock( <x> ) ;
                                                     iif( <n> <= 0, hb_MutexTryLock( <x> ), ;
                                                        hb_MutexTimeOutLock( <x>, <n> ) ) )

   /* Hash item functions */
   #xtranslate hb_Hash( [<x,...>] )            => Hash( <x> )
   #xtranslate hb_HHasKey( [<x,...>] )         => HHasKey( <x> )
   #xtranslate hb_HPos( [<x,...>] )            => HGetPos( <x> )
   #xtranslate hb_HGet( [<x,...>] )            => HGet( <x> )
   #xtranslate hb_HSet( [<x,...>] )            => HSet( <x> )
   #xtranslate hb_HDel( [<x,...>] )            => HDel( <x> )
   #xtranslate hb_HKeyAt( [<x,...>] )          => HGetKeyAt( <x> )
   #xtranslate hb_HValueAt( [<x,...>] )        => HGetValueAt( <x> )
   #xtranslate hb_HValueAt( [<x,...>] )        => HSetValueAt( <x> )
   #xtranslate hb_HPairAt( [<x,...>] )         => HGetPairAt( <x> )
   #xtranslate hb_HDelAt( [<x,...>] )          => HDelAt( <x> )
   #xtranslate hb_HKeys( [<x,...>] )           => HGetKeys( <x> )
   #xtranslate hb_HValues( [<x,...>] )         => HGetValues( <x> )
   #xtranslate hb_HFill( [<x,...>] )           => HFill( <x> )
   #xtranslate hb_HClone( [<x,...>] )          => HClone( <x> )
   #xtranslate hb_HCopy( [<x,...>] )           => HCopy( <x> )
   #xtranslate hb_HMerge( [<x,...>] )          => HMerge( <x> )
   #xtranslate hb_HEval( [<x,...>] )           => HEval( <x> )
   #xtranslate hb_HScan( [<x,...>] )           => HScan( <x> )
   #xtranslate hb_HSetCaseMatch( [<x,...>] )   => HSetCaseMatch( <x> )
   #xtranslate hb_HCaseMatch( [<x,...>] )      => HGetCaseMatch( <x> )
   #xtranslate hb_HSetAutoAdd( [<x,...>] )     => HSetAutoAdd( <x> )
   #xtranslate hb_HAutoAdd( [<x,...>] )        => HGetAutoAdd( <x> )
   #xtranslate hb_HAllocate( [<x,...>] )       => HAllocate( <x> )
   #xtranslate hb_HDefault( [<x,...>] )        => HDefault( <x> )

   /* Inet functions */
   #xtranslate hb_inetInit( [<x,...>] )                => inetInit( <x> )
   #xtranslate hb_inetCleanup( [<x,...>] )             => inetCleanup( <x> )
   #xtranslate hb_inetCreate( [<x,...>] )              => inetCreate( <x> )
   #xtranslate hb_inetClose( [<x,...>] )               => inetClose( <x> )
   #xtranslate hb_inetFD( [<x,...>] )                  => inetFD( <x> )
   #xtranslate hb_inetstatus( [<x,...>] )              => inetStatus( <x> )
   #xtranslate hb_inetErrorCode( [<x,...>] )           => inetErrorCode( <x> )
   #xtranslate hb_inetErrorDesc( [<x,...>] )           => inetErrorDesc( <x> )
   #xtranslate hb_inetClearError( [<x,...>] )          => inetClearError( <x> )
   #xtranslate hb_inetCount( [<x,...>] )               => inetCount( <x> )
   #xtranslate hb_inetAddress( [<x,...>] )             => inetAddress( <x> )
   #xtranslate hb_inetPort( [<x,...>] )                => inetPort( <x> )
   #xtranslate hb_inetTimeout( <x>, <y> )              => inetSetTimeout( <x>, <y> )
   #xtranslate hb_inetTimeout( <x> )                   => inetGetTimeout( <x> )
   #xtranslate hb_inetClearTimeout( [<x,...>] )        => inetClearTimeout( <x> )
   #xtranslate hb_inetTimeLimit( <x>, <y> )            => inetSetTimeLimit( <x>, <y> )
   #xtranslate hb_inetTimeLimit( <x> )                 => inetGetTimeLimit( <x> )
   #xtranslate hb_inetClearTimeLimit( [<x,...>] )      => inetClearTimeLimit( <x> )
   #xtranslate hb_inetPeriodCallback( <x>, <y> )       => inetSetPeriodCallback( <x>, <y> )
   #xtranslate hb_inetPeriodCallback( <x> )            => inetGetPeriodCallback( <x> )
   #xtranslate hb_inetClearPeriodCallback( [<x,...>] ) => inetClearPeriodCallback( <x> )
   #xtranslate hb_inetRecv( [<x,...>] )                => inetRecv( <x> )
   #xtranslate hb_inetRecvAll( [<x,...>] )             => inetRecvAll( <x> )
   #xtranslate hb_inetRecvLine( [<x,...>] )            => inetRecvLine( <x> )
   #xtranslate hb_inetRecvEndblock( [<x,...>] )        => inetRecvEndBlock( <x> )
   #xtranslate hb_inetDataReady( [<x,...>] )           => inetDataReady( <x> )
   #xtranslate hb_inetSend( [<x,...>] )                => inetSend( <x> )
   #xtranslate hb_inetSendAll( [<x,...>] )             => inetSendAll( <x> )
   #xtranslate hb_inetGetHosts( [<x,...>] )            => inetGetHosts( <x> )
   #xtranslate hb_inetGetAlias( [<x,...>] )            => inetGetAlias( <x> )
   #xtranslate hb_inetServer( [<x,...>] )              => inetServer( <x> )
   #xtranslate hb_inetAccept( [<x,...>] )              => inetAccept( <x> )
   #xtranslate hb_inetConnect( [<x,...>] )             => inetConnect( <x> )
   #xtranslate hb_inetConnectIP( [<x,...>] )           => inetConnectIP( <x> )
   #xtranslate hb_inetDGramBind( [<x,...>] )           => inetDGramBind( <x> )
   #xtranslate hb_inetDGram( [<x,...>] )               => inetDGram( <x> )
   #xtranslate hb_inetDGramSend( [<x,...>] )           => inetDGramSend( <x> )
   #xtranslate hb_inetDGramRecv( [<x,...>] )           => inetDGramRecv( <x> )
   #xtranslate hb_inetCRLF( [<x,...>] )                => inetCRLF( <x> )
   #xtranslate hb_inetIsSocket( [<x,...>] )            => inetIsSocket( <x> )
   #xtranslate hb_inetClose( [<x,...>] )               => inetDestroy( <x> )

   /* Some statement endings */
   #xcommand ENDSEQUENCE => END
   #xcommand ENDSWITCH => END
   #xcommand END SWITCH => END
   #xcommand ENDWITH => END
   #xcommand END WITH => END
   #xcommand END OBJECT => END

   #ifndef HB_SYMBOL_UNUSED
      #define HB_SYMBOL_UNUSED( symbol )  ( symbol := ( symbol ) )
   #endif

   #define HB_GTI_CLIPBOARDPASTE HB_GTI_CLIPBOARDPAST

#else

   #if defined( __PLATFORM__WINDOWS ) .AND. ! defined( __PLATFORM__Windows )
      #define __PLATFORM__Windows
   #endif
   #if defined( __PLATFORM__LINUX ) .AND. ! defined( __PLATFORM__Linux )
      #define __PLATFORM__Linux
   #endif

   /* these are used _by_ MaxRow()/MaxCol() */
   #define GTI_WINDOW         0  /* Maximum window size ('window' in CT terms) */
   #define GTI_SCREEN         1  /* Maximum screen size ('Screen' in CT terms) */
   #define GTI_CLIENT         2  /* Maximum possible client size of a window */
   #define GTI_MAX            3  /* Maximum possible window size (in Windows) */

   #xtranslate hb_eol()                        => hb_osNewLine()
   #xtranslate hb_ps()                         => hb_osPathSeparator()

   #xtranslate MaxRow( .T. )                   => hb_gtInfo( HB_GTI_VIEWPORTHEIGHT )
   #xtranslate MaxCol( .T. )                   => hb_gtInfo( HB_GTI_VIEWPORTWIDTH )
   #xtranslate NextKey( [<x>] )                => hb_keyNext( <x> )

   #xtranslate Str( <x>, [<y>], [<y>], <z> )   => iif( <z>, hb_ntos( <x> ), Str( <x> ) )

   #xuntranslate NetName(                      =>
   #xuntranslate MemoWrit(                     =>

   #xtranslate NetName( <n> )                  => iif( HB_ISNUMERIC( <n> ) .AND. <n> == 1, hb_UserName(), NetName() )
   #xtranslate MemoWrit( <x>, <y>, <z> )       => iif( HB_ISLOGICAL( <z> ) .AND. ! <z>, hb_MemoWrit( <x>, <y> ), MemoWrit( <x>, <y> ) )

   #xuntranslate AIns(                         =>
   #xuntranslate ADel(                         =>

   #xtranslate AIns( <a>, <n>, [<x,...>] )     => hb_AIns( <a>, <n>, <x> )
   #xtranslate ADel( <a>, <n>, <l> )           => hb_ADel( <a>, <n>, <l> )

   #xtranslate AScan(<a>,<b>,[<c>],[<d>],<e>)  => hb_AScan( <a>, <b>, <c>, <d>, <e> )
   #xtranslate At( <a>, <b>, [<x,...>] )       => hb_At( <a>, <b>, <x> )

   #xtranslate GetEnv( [<x,...>] )             => hb_GetEnv( <x> )
   #xtranslate SetKey( [<x,...>] )             => hb_SetKey( <x> )

   /* TEXT INTO <varname> */
   #xcommand TEXT INTO <v> => #pragma __text|<v>+=%s+hb_eol();<v>:=""

   /* SWITCH ... ; case ... ; DEFAULT ; ... ; END */
   #xcommand DEFAULT => OTHERWISE

   /* FOR EACH hb_enumIndex() */
   #xtranslate hb_enumIndex( <!v!> ) => <v>:__enumIndex()

   /* TRY / CATCH / FINALLY / END */
   #xcommand TRY  => BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
   #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
   #xcommand FINALLY => ALWAYS

   /* EXTENDED CODEBLOCKs */
   #xtranslate \<|[<x,...>]| => {| <x> |
   #xcommand > [<*x*>]       => } <x>

   /* xHarbour operators: IN, HAS, LIKE, >>, <<, |, &, ^^ */
   #translate ( <exp1> IN <exp2> )     => ( ( <exp1> ) $ ( <exp2> ) )
   #translate ( <exp1> HAS <exp2> )    => ( hb_regexHas( ( <exp2> ), ( <exp1> ) ) )
   #translate ( <exp1> LIKE <exp2> )   => ( hb_regexLike( ( <exp2> ), ( <exp1> ) ) )
   #translate ( <exp1> \<\< <exp2> )   => ( hb_bitShift( ( <exp1> ), ( <exp2> ) ) )
   #translate ( <exp1> >> <exp2> )     => ( hb_bitShift( ( <exp1> ), -( <exp2> ) ) )
   /* NOTE: These macros can break some valid Harbour/Clipper constructs,
            so they are disabled by default. Enable them with care, or
            even better to switch to use HB_BIT*() functions directly.
            They are optimized by Harbour compiler the same way (and even
            more) as these C-like operators, without any bad side-effects. */
   #if defined( XHB_BITOP )
      #translate ( <exp1> | <exp2> )      => ( hb_bitOr( ( <exp1> ), ( <exp2> ) ) )
      #translate ( <exp1> & <exp2> )      => ( hb_bitAnd( ( <exp1> ), ( <exp2> ) ) )
      #translate ( <exp1> ^^ <exp2> )     => ( hb_bitXor( ( <exp1> ), ( <exp2> ) ) )
   #endif

   #command @ <row>, <col> PROMPT <prompt> [ MESSAGE <msg> ] [ COLOR <color> ] => ;
      __AtPrompt( <row>, <col>, <prompt>, <msg>, <color> )

   #command SET TRIMFILENAME <x:ON,OFF,&> => Set( _SET_TRIMFILENAME, <(x)> )
   #command SET TIME FORMAT [TO] <f>      => Set( _SET_TIMEFORMAT, <f> )

   #define HB_GTI_CLIPBOARDPAST HB_GTI_CLIPBOARDPASTE

   /* These also have wrapper function in xhb lib */

   #xtranslate gtSetClipboard( <x> )           => hb_gtInfo( HB_GTI_CLIPBOARDDATA, <x> )
   #xtranslate gtGetClipboard()                => hb_gtInfo( HB_GTI_CLIPBOARDDATA )
   #xtranslate gtGetClipboardSize()            => Len( hb_gtInfo( HB_GTI_CLIPBOARDDATA ) )
   #xtranslate gtPasteClipboard()              => hb_gtInfo( HB_GTI_CLIPBOARDPASTE )
   #xtranslate gtProcessMessages()             => NextKey()
   #xtranslate SetInkeyBeforeBlock( [<x>] )    => hb_gtInfo( HB_GTI_INKEYREAD [, <x>] ) <-x->
   #xtranslate SetInkeyAfterBlock( [<x>] )     => hb_gtInfo( HB_GTI_INKEYFILTER [, <x>] ) <-x->
   #xtranslate GfxPrimitive( [<x,...>] )       => hb_gfxPrimitive( <x> )
   #xtranslate GfxText( [<x,...>] )            => hb_gfxText( <x> )

   #xtranslate hb_OpenProcess( [<x,...>] )     => hb_processOpen( <x> )
   #xtranslate hb_CloseProcess( [<x,...>] )    => hb_processClose( <x> )

   #xtranslate hb_IsRegexString( [<x>] )       => hb_IsRegex( <x> )
   #xtranslate MethodName( [<x,...>] )         => hb_MethodName( <x> )
   #xtranslate LibLoad( [<x,...>] )            => hb_libLoad( <x> )
   #xtranslate LibFree( [<x,...>] )            => hb_libFree( <x> )
   #xtranslate hb_Checksum( [<x,...>] )        => hb_Adler32( <x> )
   #xtranslate hb_SetLastKey( [<x,...>] )      => hb_keySetLast( <x> )
   #xtranslate CStr( [<x,...>] )               => hb_CStr( <x> )
   #xtranslate ValToPrgExp( [<x,...>] )        => hb_ValToExp( <x> )
   #xtranslate SecondsSleep( [<x,...>] )       => hb_idleSleep( <x> )
   #xtranslate WildMatch( [<x,...>] )          => hb_WildMatch( <x> )
   #xtranslate hb_bitIsSet( [<x,...>] )        => hb_bitTest( <x> )
   #xtranslate hb_DeserialNext( <x> )          => hb_Deserialize( <x> )
   #xtranslate hb_FuncPtr( <x> )               => __dynSN2Sym( <x> )

   #xtranslate HexToNum( [<c,...>] )           => hb_HexToNum( <c> )
   #xtranslate NumToHex( [<n,...>] )           => hb_NumToHex( <n> )
   #xtranslate HexToStr( [<c,...>] )           => hb_HexToStr( <c> )
   #xtranslate StrToHex( [<c,...>] )           => hb_StrToHex( <c> )

   #xtranslate IsPointer( <xValue> )           => HB_ISPOINTER( <xValue> )

   #xtranslate hb_SetIniComment( [<x,...>] )   => hb_iniSetComment( <x> )
   #xtranslate hb_ReadIni( [<x,...>] )         => hb_iniRead( <x> )
   #xtranslate hb_WriteIni( [<x,...>] )        => hb_iniWrite( <x> )

   #xtranslate DisableWaitLocks( [<x>] )       => hb_DisableWaitLocks( <x> )

   #xtranslate hbConsoleLock()                 => hb_gtLock()
   #xtranslate hbConsoleUnlock()               => hb_gtUnlock()

   #xtranslate hb_CmdArgArgV( [<x,...>] )      => hb_argv( <x> )

   #xtranslate RAScan( [<x,...>] )             => hb_RAScan( <x> )

   #xtranslate ASizeAlloc( <a> [, <n,...>] )   => AFill( <a> )
   #xtranslate ALenAlloc( <a> [, <n,...>] )    => Len( <a> )

   #xtranslate DateTime( [<x,...>] )           => hb_DateTime( <x> )
   #xtranslate Hour( [<x>] )                   => hb_Hour( <x> )
   #xtranslate Minute( [<x>] )                 => hb_Minute( <x> )
   #xtranslate TToS( [<x>] )                   => hb_TToS( <x> )
   #xtranslate SToT( [<x>] )                   => hb_SToT( <x> )
   #xtranslate TToC( [<x,...>] )               => hb_TToC( <x> )
   #xtranslate CToT( [<x,...>] )               => hb_CToT( <x> )

   #xtranslate i18n( <x> )                     => hb_i18n_gettext( <x> )

   #xtranslate hb_SetCodepage( [<x,...>] )     => hb_cdpSelect( <x> )

   /* MT functions */
   #xtranslate hb_MultiThread()                => hb_mtvm()
   #xtranslate GetCurrentThread()              => hb_threadSelf()
   #xtranslate GetThreadId( [<x,...>] )        => hb_threadID( <x> )
   #xtranslate ThreadGetCurrentInternal()      => hb_threadID()
   #xtranslate IsSameThread( <x> [,<y>] )      => ( hb_threadID( <x> ) == hb_threadID( <y> ) )
   #xtranslate IsValidThread( <x> )            => ( hb_threadID( <x> ) != 0 )
   #xtranslate JoinThread( <x> )               => hb_threadJoin( <x> )
   #xtranslate KillThread( <x> )               => hb_threadQuitRequest( <x> )
   #xtranslate StopThread( <x> )               => hb_threadQuitRequest( <x> ); hb_threadJoin( <x> )
   #xtranslate KillAllThreads()                => hb_threadTerminateAll()
   #xtranslate WaitForThreads()                => hb_threadWaitForAll()

   #xtranslate ThreadSleep( <x> )              => hb_idleSleep( <x> / 1000 )

   #xtranslate DestroyMutex( <x> )             =>
   #xtranslate hb_MutexTryLock( <x> )          => hb_mutexLock( <x>, 0 )
   #xtranslate hb_MutexTimeOutLock( <x> )      => hb_mutexLock( <x>, 0 )
   #xtranslate hb_MutexTimeOutLock( <x>, <n> ) => hb_mutexLock( <x>, iif( HB_ISNUMERIC( <n> ), <n> / 1000, 0 ) )

//   #xtranslate Notify( <x,...> )               => hb_mutexNotify( <x> )
//   #xtranslate NotifyAll( <x,...> )            => hb_mutexNotifyAll( <x> )//
   #xtranslate Subscribe( <x,...> )            => {| mtx, nTimeOut, lSubscribed | ;;
                                                   local xSubscribed ;;
                                                   lSubscribed := hb_mutexSubscribe( mtx, ;
                                                                                     iif( HB_ISNUMERIC( nTimeOut ), nTimeOut / 1000, ), ;
                                                                                     @xSubscribed ) ;
                                                   return xSubscribed ; }:eval( <x> )
   #xtranslate SubscribeNow( <x,...> )         => {| mtx, nTimeOut, lSubscribed | ;;
                                                   local xSubscribed ;;
                                                   lSubscribed := hb_mutexSubscribeNow( mtx, ;
                                                                                        iif( HB_ISNUMERIC( nTimeOut ), nTimeOut / 1000, ), ;
                                                                                        @xSubscribed ) ;
                                                   return xSubscribed ; }:eval( <x> )

   #xtranslate StartThread( [<x>] )            => hb_threadStart( <x> )
   #xtranslate StartThread( <x>, <y> [, <z,...>] ) => iif( HB_ISOBJECT( <x> ) .AND. HB_ISSTRING( <y> ), ;
                                                           hb_threadStart( {| ... | ( <x> ):&( <y> )( ... ) } [, <z>] ), ;
                                                           hb_threadStart( <x>, <y> [, <z>] ) )

   /* not possible to well replicate xHarbour behavior because it's buggy
      these function results are different on different platform, chosen
      translation which returns compatible types (numeric) */
   #xtranslate ThreadGetCurrent()              => hb_threadID()
   #xtranslate GetSystemThreadId( [<x,...>] )  => hb_threadID( <x> )

   /* do not need translation */
   /* hb_mutexCreate()                         => hb_mutexCreate() */
   /* hb_mutexUnlock( <x> )                    => hb_mutexUnlock( <x> ) */

   /* do not need translation only when xHarbour code is compiled by Harbour */
   /* hb_mutexLock( <x> )                      => hb_mutexLock( <x> ) */

   /* functions I do not want to document as public .prg API in Harbour */
   /* ThreadInspect() */
   /* ThreadInspectEnd() */
   /* ThreadIsInspect() */

   /* functions which are not necessary in Harbour */
   /* hb_ThreadGetTryErrorArray() */
   /* ThreadIdleFence() */

   /* function which I can add but it's not very usable in real life */
   /* hb_ThreadCountStacks() */

   /* Hash item functions */
   #xtranslate Hash( [<x,...>] )           => hb_Hash( <x> )
   #xtranslate HHasKey( [<x,...>] )        => hb_HHasKey( <x> )
   #xtranslate HGetPos( [<x,...>] )        => hb_HPos( <x> )
   #xtranslate HGet( [<x,...>] )           => hb_HGet( <x> )
   #xtranslate HSet( [<x,...>] )           => hb_HSet( <x> )
   #xtranslate HDel( [<x,...>] )           => hb_HDel( <x> )
   #xtranslate HGetKeyAt( [<x,...>] )      => hb_HKeyAt( <x> )
   #xtranslate HGetValueAt( [<x,...>] )    => hb_HValueAt( <x> )
   #xtranslate HSetValueAt( [<x,...>] )    => hb_HValueAt( <x> )
   #xtranslate HGetPairAt( [<x,...>] )     => hb_HPairAt( <x> )
   #xtranslate HDelAt( [<x,...>] )         => hb_HDelAt( <x> )
   #xtranslate HGetKeys( [<x,...>] )       => hb_HKeys( <x> )
   #xtranslate HGetValues( [<x,...>] )     => hb_HValues( <x> )
   #xtranslate HFill( [<x,...>] )          => hb_HFill( <x> )
   #xtranslate HClone( [<x,...>] )         => hb_HClone( <x> )
   #xtranslate HCopy( [<x,...>] )          => hb_HCopy( <x> )
   #xtranslate HMerge( [<x,...>] )         => hb_HMerge( <x> )
   #xtranslate HEval( [<x,...>] )          => hb_HEval( <x> )
   #xtranslate HScan( [<x,...>] )          => hb_HScan( <x> )
   #xtranslate HSetCaseMatch( [<x,...>] )  => hb_HSetCaseMatch( <x> )
   #xtranslate HGetCaseMatch( [<x,...>] )  => hb_HCaseMatch( <x> )
   #xtranslate HSetAutoAdd( [<x,...>] )    => hb_HSetAutoAdd( <x> )
   #xtranslate HGetAutoAdd( [<x,...>] )    => hb_HAutoAdd( <x> )
   #xtranslate HAllocate( [<x,...>] )      => hb_HAllocate( <x> )
   #xtranslate HDefault( [<x,...>] )       => hb_HDefault( <x> )
   #xtranslate HSetPartition( [<x,...>] )  =>

   /* Associative hash array functions */
   #xtranslate haAGetKeyAt( [<x,...>] )    => hb_HKeyAt( <x> )
   #xtranslate haAGetValueAt( [<x,...>] )  => hb_HValueAt( <x> )
   #xtranslate haADelAt( [<x,...>] )       => hb_HDelAt( <x> )
   #xtranslate haAGetPos( [<x,...>] )      => hb_HPos( <x> )
   #xtranslate haAGetRealPos( <x>, <y> )   => iif( HB_ISNUMERIC( <y> ) .AND. <y> >= 1 .AND. ;
                                                   Int( <y> ) <= Len( <x> ), Int( <y> ), 0 )
   #xtranslate HGetVaaPos( <x> )           => {| h | ;;
                                                LOCAL a := Array( Len( h ), v ;;
                                                FOR EACH v IN a ;;
                                                   v := v:__enumIndex() ;;
                                                NEXT ;;
                                                RETURN a ; }:eval( <x> )
   #xtranslate HGetAACompatibility( <x> )  => hb_HKeepOrder( <x> )
   #xtranslate HSetAACompatibility( [<x,...>] ) => {| h | ;;
                                                   hb_HKeepOrder( h ) ;;
                                                   RETURN .T. ; }:eval( <x> )

   /* Inet functions */
   #xtranslate inetInit( [<x,...>] )                => hb_inetInit( <x> )
   #xtranslate inetCleanup( [<x,...>] )             => hb_inetCleanup( <x> )
   #xtranslate inetCreate( [<x,...>] )              => hb_inetCreate( <x> )
   #xtranslate inetClose( [<x,...>] )               => hb_inetClose( <x> )
   #xtranslate inetFD( [<x,...>] )                  => hb_inetFD( <x> )
   #xtranslate inetStatus( [<x,...>] )              => hb_inetstatus( <x> )
   #xtranslate inetErrorCode( [<x,...>] )           => hb_inetErrorCode( <x> )
   #xtranslate inetErrorDesc( [<x,...>] )           => hb_inetErrorDesc( <x> )
   #xtranslate inetClearError( [<x,...>] )          => hb_inetClearError( <x> )
   #xtranslate inetCount( [<x,...>] )               => hb_inetCount( <x> )
   #xtranslate inetAddress( [<x,...>] )             => hb_inetAddress( <x> )
   #xtranslate inetPort( [<x,...>] )                => hb_inetPort( <x> )
   #xtranslate inetSetTimeout( [<x,...>] )          => hb_inetTimeout( <x> )
   #xtranslate inetGetTimeout( [<x,...>] )          => hb_inetTimeout( <x> )
   #xtranslate inetClearTimeout( [<x,...>] )        => hb_inetClearTimeout( <x> )
   #xtranslate inetSetTimeLimit( [<x,...>] )        => hb_inetTimeLimit( <x> )
   #xtranslate inetGetTimeLimit( [<x,...>] )        => hb_inetTimeLimit( <x> )
   #xtranslate inetClearTimeLimit( [<x,...>] )      => hb_inetClearTimeLimit( <x> )
   #xtranslate inetSetPeriodCallback( [<x,...>] )   => hb_inetPeriodCallback( <x> )
   #xtranslate inetGetPeriodCallback( [<x,...>] )   => hb_inetPeriodCallback( <x> )
   #xtranslate inetClearPeriodCallback( [<x,...>] ) => hb_inetClearPeriodCallback( <x> )
   #xtranslate inetRecv( [<x,...>] )                => hb_inetRecv( <x> )
   #xtranslate inetRecvAll( [<x,...>] )             => hb_inetRecvAll( <x> )
   #xtranslate inetRecvLine( [<x,...>] )            => hb_inetRecvLine( <x> )
   #xtranslate inetRecvEndBlock( [<x,...>] )        => hb_inetRecvEndblock( <x> )
   #xtranslate inetDataReady( [<x,...>] )           => hb_inetDataReady( <x> )
   #xtranslate inetSend( [<x,...>] )                => hb_inetSend( <x> )
   #xtranslate inetSendAll( [<x,...>] )             => hb_inetSendAll( <x> )
   #xtranslate inetGetHosts( [<x,...>] )            => hb_inetGetHosts( <x> )
   #xtranslate inetGetAlias( [<x,...>] )            => hb_inetGetAlias( <x> )
   #xtranslate inetServer( [<x,...>] )              => hb_inetServer( <x> )
   #xtranslate inetAccept( [<x,...>] )              => hb_inetAccept( <x> )
   #xtranslate inetConnect( [<x,...>] )             => hb_inetConnect( <x> )
   #xtranslate inetConnectIP( [<x,...>] )           => hb_inetConnectIP( <x> )
   #xtranslate inetDGramBind( [<x,...>] )           => hb_inetDGramBind( <x> )
   #xtranslate inetDGram( [<x,...>] )               => hb_inetDGram( <x> )
   #xtranslate inetDGramSend( [<x,...>] )           => hb_inetDGramSend( <x> )
   #xtranslate inetDGramRecv( [<x,...>] )           => hb_inetDGramRecv( <x> )
   #xtranslate inetCRLF( [<x,...>] )                => hb_inetCRLF( <x> )
   #xtranslate inetIsSocket( [<x,...>] )            => hb_inetIsSocket( <x> )
   #xtranslate inetDestroy( [<x,...>] )             => iif( hb_inetIsSocket( <x> ), hb_inetClose( <x> ), )

   /* Throw() => generate error */
   #xtranslate Throw( <oErr> ) => ( Eval( ErrorBlock(), <oErr> ), Break( <oErr> ) )

#endif

#endif /* __HARBOUR__ */

#endif /* HBCOMPAT_CH */


Mais uma vez, muito obrigado a todos.

Regards, saludos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Claudio Soto » 02 Nov 2021 11:49

Jairo Maia escreveu:porque sempre tem atualização na versão nightly (noturna)? Isso não entendo.

Hola, hace tiempo que estoy medio por fuera del mundo Harbour, pero cuando yo estaba en HMG funcionaba más o menos así: existia un release de Hb considerado ofialmente estable que se actualizaba cada varios meses y la version nightly que se actualizaba casi todos los dias en una época en la cual se corregian bug menores y se le agregaban muchas nuevas funcionalidades. Si bien la version nightly no se recomendaba oficialmente para ser usada en producción era tan estable que de hecho a cada nuevo release de HMG venia con la última versión de Hb nightly disponible hasta ese momento y nunca tuvimos ningún problema.
De hecho toda vez que he buscado la "ultima version" de Hb utilizo tanto los fuentes como los binarios de la ultima versión nightly disponible.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Kapiaba » 02 Nov 2021 12:02

Aqui Mister Quintas, um exemplo, onde eu compilo com HARBOUR ou XHARBOUR. Muito simples e fácil.

CX.BAT -> xHarbour
HARB.BAT -> Harbour

PBACKUPH.rar
BACKUP COMPILADO COM FIVEWIN FOR HARBOUR.
(2.52 MiB) Baixado 29 vezes


Obg. abs.

Regards, saludos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Jairo Maia » 02 Nov 2021 13:35

Claudio Soto escreveu:Si bien la version nightly no se recomendaba oficialmente para ser usada en producción era tan estable que de hecho a cada nuevo release de HMG venia con la última versión de Hb nightly disponible hasta ese momento y nunca tuvimos ningún problema.
Sim! Periodicamente faço a atualização, e por precaução sempre mantenho a versão anterior em "backup", mas também nunca precisei voltar a versão anterior. A versão nightly até agora sempre funcionou corretamente.

Vou continuar observando, mas a despeito do que foi colocado aqui por alguns colegas, a versão nightly não é compilada automaticamente todas as noites, salvo se isso passou a ser a partir de agora. Como disse antes, atualizei na semana passada, eu estava usando uma versão de Dezembro de 2020, e a atual é datada de Abril de 2021.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Qual a última versão do Harbour 3.2?

Mensagempor Itamar M. Lins Jr. » 02 Nov 2021 15:32

Olá!
mas a despeito do que foi colocado aqui por alguns colegas, a versão nightly não é compilada automaticamente todas as noites,

Quem está dizendo que é gerado todo dia é o LOG !
Basta olhar, quando tem erro aparece informando, estava com erro e foi corrigido se não me engano há uns 2 anos, mais ou menos.
https://sourceforge.net/p/harbour-project/activity/?page=0&limit=100#6180c1d69187d3d09ea78e17

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro