I've tried the suggestion that Xavi proposed, but it produces a
bad conversion.
1- Changing the es850C as proposed by CPINFO.
2- Changing cdpapi as XAVI propose and (1). It produce UPPER(á)-> B
3- original cdpapi with the following change in de es850c as
detailed in the CPINFO.txt.
I guess that the last works fine, i've tried with the program that
send I you previously and it produce the same result in clipper
and harbour ,no difference between both programs.
(OPENFILE and CLOSEFILE, are User defined functions I have wrote
that helps me opening and closing files, change them to DBUSEAREA
and DBCLOSEAREA)
I will test more this solution.
Thanks
Maurizio Faccio
Xavi escribió:
Sorry, bad typo in post patch. I just change.
<------------- cdpapi.c(398) ----------------------->
if( cdpage->s_upper[il] == cdpage->s_lower[il] ) cdpage->s_upper
[il] = *ptrUpper;
if( cdpage->s_upper[iu] == cdpage->s_lower[iu] ) cdpage->s_lower
[iu] = *ptrLower;
<---------------------------------------------------->
10/13/09 15:05:42 Windows XP 5.1.2600 Service Pack 3 Harbour
2.0.0beta1 (Rev. 11287)
Character encoding: ES850C 850C WITHOUT CHANGING CDPAPI
==================================================
number of upper and lower characters is different
letters are not sorted continuously
Warning: irregular CP which needs special definition in Harbour
upper: "ABCDE∆FGHIJKLMN¥OPQRSTUVWXY˚Z∂⁄˙"
lower: "a bcde≠fghi¡jklmn¤o¢pqrstu˜vwxy™z∫≥‰"
==================================================
10/13/09 17:12:47 Windows XP 5.1.2600 Service Pack 3 Harbour
2.0.0beta1 (Rev. 11287)
Character encoding: ES850C XAVI proposed
==================================================
character '≥' (132:A L ) is the same as upper and lower
character '∫' (134:A L ) is the same as upper and lower
character '‰' (148:A L ) is the same as upper and lower
number of upper and lower characters is different
letters are not sorted continuously
Warning: irregular CP which needs special definition in Harbour
upper: "ABCDE∆FGHIJKLMN¥OPQRSTUVWXY˚Z∂⁄˙"
lower: "a bcde≠fghi¡jklmn¤o¢pqrstu˜vwxyz™≥∫‰"
==================================================
10/13/09 17:34:30 Windows XP 5.1.2600 Service Pack 3 Harbour
2.0.0beta1 (Rev. 11287)
Character encoding: ES850C
==================================================
number of upper and lower characters is different
letters are not sorted continuously
Warning: irregular CP which needs special definition in Harbour
upper: "ABCDE∆FGHIJKLMN¥OPQRSTUVWXY˚Z∂⁄˙"
lower: " abcde≠fgh¡ijklmn¤¢opqrst£uvwxy™z∫≥‰"
==================================================
New es850c:
static HB_CODEPAGE s_codepage = { "ES850C",
HB_CPID_850, HB_UNITB_850, NUMBER_OF_CHARACTERS,
"AABCDE∆FGHIIJKLMN¥OOPQRSTUUVWXY˚Z∂⁄˙",
" abcde≠fgh¡ijklmn¤¢opqrst£uvwxy™z∫≥‰",
IS_LATIN, ACCENTED_EQUAL, ACCENTED_INTERLEAVED, 0, 0, NULL,
NULL, NULL, NULL, 0, NULL };
/*
* $Id: cpes850c.c 10194 2009-02-06 19:03:27Z vszakats $
*/
/*
* Harbour Project source code:
* National Collation Support Module (ES850C - Spanish Clipper
compatible)
*
* Copyright 2002 Alexander S.Kresin <a...@belacy.belgorod.su>
* www - http://www.harbour-project.org
* Spanish MS-DOS support by Antonio Linares <alina...@fivetechsoft.com
>
*
* 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. 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.
*
*/
/* Language name: Spanish */
/* ISO language code (2 chars): ES */
/* Codepage: 850 */
#include "hbapi.h"
#include "hbapicdp.h"
#define NUMBER_OF_CHARACTERS 33 /* The number of single
characters in the
alphabet, two-as-one aren't
considered
here, accented - are
considered. */
#define IS_LATIN 1 /* Should be 1, if the
national alphabet
is based on Latin */
#define ACCENTED_EQUAL 0 /* Should be 1, if accented
character
has the same weight as
appropriate
unaccented. */
#define ACCENTED_INTERLEAVED 0 /* Should be 1, if accented
characters
sort after their unaccented
counterparts
only if the unaccented
versions of all
characters being compared are
the same
( interleaving ) */
/* If ACCENTED_EQUAL or ACCENTED_INTERLEAVED is 1, you need to
mark the
accented characters with the symbol '~' before each of them, for
example:
a~_
If there is two-character sequence, which is considered as one,
it should
be marked with '.' before and after it, for example:
... h.ch.i ...
The Upper case string and the Lower case string should be
absolutely the
same excepting the characters case, of course.
*/
static HB_CODEPAGE s_codepage = { "ES850C",
HB_CPID_850, HB_UNITB_850, NUMBER_OF_CHARACTERS,
"AABCDE∆FGHIIJKLMN¥OOPQRSTUUVWXY˚Z∂⁄˙",
" abcde≠fgh¡ijklmn¤¢opqrst£uvwxy™z∫≥‰",
IS_LATIN, ACCENTED_EQUAL, ACCENTED_INTERLEAVED, 0, 0, NULL,
NULL, NULL, NULL, 0, NULL };
/*static HB_CODEPAGE s_codepage = { "ES850C",
HB_CPID_850, HB_UNITB_850, NUMBER_OF_CHARACTERS,
"ABCDE∆FGHIJKLMN¥OPQRSTUVWXY˚Z∂⁄˙",
"a bcde≠fghi¡jklmn¤o¢pqrstu˜vwxy™z∫≥‰",
IS_LATIN, ACCENTED_EQUAL, ACCENTED_INTERLEAVED, 0, 0, NULL,
NULL, NULL, NULL, 0, NULL };*/
HB_CODEPAGE_INIT( ES850C )
#if defined( HB_PRAGMA_STARTUP )
#pragma startup hb_codepage_Init_ES850C
#elif defined( HB_MSC_STARTUP )
#if defined( HB_OS_WIN_64 )
#pragma section( HB_MSC_START_SEGMENT, long, read )
#endif
#pragma data_seg( HB_MSC_START_SEGMENT )
static HB_$INITSYM hb_vm_auto_hb_codepage_Init_ES850C =
hb_codepage_Init_ES850C;
#pragma data_seg()
#endif
REQUEST HB_LANG_ES
REQUEST HB_CODEPAGE_ES850C
function main()
HB_SETCODEPAGE('ES850C')
HB_LANGSELECT('ES')
OPENFILE({"nrochar"},.t.,.t.)
SELECT("nrochar")
DBGOTOP()
while !eof()
bloquea("R")
FIELD->HRBchar:=CHR(nronro)
FIELD->HRBupper:=UPPER(CHR(nronro))
FIELD->HRBlower:=LOWER(CHR(nronro))
FIELD->HRBupnro:=ASC(UPPER(CHR(nronro)))
FIELD->HRBLOnro:=ASC(LOWER(CHR(nronro)))
BLOQUEA()
DBSKIP()
ENDDO
CLOSEFILE({"NROCHAR"})
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour