Compiling FoxPro 2.6 program

1,158 views
Skip to first unread message

foxba...@gmail.com

unread,
Jul 14, 2015, 8:11:07 PM7/14/15
to harbou...@googlegroups.com
Hello all

I've tried to solve some problems, which I encountered, by myself looking at documentation and searching this group and it was partially successful, but only partially. I apologise in advance if my questions too simple.

I am not really a developer of that program and even not familiar with FoxPro or databases, although I have some programming experience and xBase code looks self-explanatory for me. The developer of program isn't young and can well only into his programs and some Windows usage and not comfortable with Internets and English, that's why I'm here.

The task is to run old DOS programs on modern versions of Windows. Of course, it is possible to use virtual machines, but I want to postpone this option. I've found vDos project, but its performance leaves much to be desired.

Then I found your project. I've tried to compile main PRG file, but failed due to several reasons:
1. I use Linux, so FS is case-sensitive. All files are in upper-case, but they sometimes referred to in source code in different cases. Of course, it is possible to fix by bringing them to one case, but may be it is possible to tell to ignore case?

2. hbmk2 reports about syntax errors, e.g. for code "on key=112 do <something>". Does Harbour support FoxPro dialect and what can I do to make it support, if not?


After failing to compile the whole program I tried to compile small pieces of that program, which doesn't lead to syntax errors. And it was really nice to get native executable (although it is in fact VM+pcode). But I still have some rough edges.

1. The file contains Russian text in `say' operator in CP866 encoding (proven by iconv -f cp866). I've added SET(_SET_CODEPAGE, "cp866") to the beginning of the file, but I still see garbled text. I output to terminal (cos doesn't know yet how to activate other backend).

2. If I convert file to UTF8 and add SET(_SET_CODEPAGE, "UTF8") to the beginning, I see Russian, but it is cropped roughly at the middle of 80 column terminal. I can see the whole text only if I increase terminal width.

Here are several questions: how to deal with CP866 without encoding conversion? How to do without adding SET(_SET_CODEPAGE, "cp866") or any other modifications to source files?

And finally: I use 64-bit linux, so I call hbmk2 with -cflag=-m32 -ldflag=-m32 options. It is possible to do without these command-line options?

luis vasquez

unread,
Jul 14, 2015, 10:33:33 PM7/14/15
to harbou...@googlegroups.com
Estimado,
si necesita ejecutar programas antiguos dos sobre windows puede utilizar DOSBOX http://www.dosbox.com
es muy simple de usar y efectivo.
espero le sirva
saludos cordiales,
Luis Vasquez

Dear,
if you need to run old DOS programs on Windows you can use DOSBOX http://www.dosbox.com
It is very simple to use and effective.
I hope it serves
best regards,

--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: http://groups.google.com/group/harbour-users

---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Saludos cordiales,
Luis Vasquez.

Daniele Campagna

unread,
Jul 15, 2015, 2:01:08 AM7/15/15
to harbou...@googlegroups.com
Il 07/15/2015 02:11 AM, foxba...@gmail.com ha scritto:


Then I found your project. I've tried to compile main PRG file, but failed due to several reasons:
1. I use Linux, so FS is case-sensitive. All files are in upper-case, but they sometimes referred to in source code in different cases. Of course, it is possible to fix by bringing them to one case, but may be it is possible to tell to ignore case?

SET FILECASE UPPER
SET FILECASE LOWER
and
set(SET_FILECASE), this one IIRC gives back a numeric value


2. hbmk2 reports about syntax errors, e.g. for code "on key=112 do <something>". Does Harbour support FoxPro dialect and what can I do to make it support, if not?

FoxPro is not supported AFAIK. I suppose that setkey() does the same. You can use maybe a preprocessor directive :
#command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
but I am not sure because the equal sign probably is not allowed.
 
For other issues maybe someone will jump in...

Dan

Klas Engwall

unread,
Jul 15, 2015, 6:19:51 PM7/15/15
to harbou...@googlegroups.com
Hi foxbase2.0,

> ... I found your project.

Which Harbour version did you download? The stable 3.0 or the nightly 3.2?

> 1. The file contains Russian text in `say' operator in CP866 encoding
> (proven by iconv -f cp866). I've added SET(_SET_CODEPAGE, "cp866") to
> the beginning of the file, but I still see garbled text. I output to
> terminal (cos doesn't know yet how to activate other backend).

Do you mean SET(_SET_CODEPAGE, "cp866") or SET(_SET_CODEPAGE, "RU866")?

If you mean what you wrote, and you are using HB32, you should get an
error message from hbmk2 if you also requested that codepage:

hbmk2: Error: Referenced, missing, but unknown function(s):
HB_CODEPAGE_CP866()

If you did not request it, HB32 should give you a BASE/1302 runtime error.

HB30 will accept "CP866" without a request statement, but the codepage
will not be linked and the displayed result will be wrong. If you
request it, you will get a linker error (undefined reference).

So, based on that, and since you did not report an RTE, it looks like
you use HB30. It is a very old Harbour version, and practically nobody
uses it anymore. We have all (almost) moved to the nightly (but we are
careful and check the Harbour-Devel newsgroup for potential problem
reports).

Either way, start with:
request hb_codepage_RU866

And then:
set( _SET_CODEPAGE, "RU866" )

Does that improve things?

Regards,
Klas

ezzio

unread,
Jul 15, 2015, 6:22:41 PM7/15/15
to Harbour Users
DOSBOX works fine in single user enviroment but does not controls well record locking


--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: http://groups.google.com/group/harbour-users

---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
MSc. Oscar Ezzio Reyes Donato, CISA, CRISC, ITIL
(506) 8382-2547

Klas Engwall

unread,
Jul 15, 2015, 7:16:53 PM7/15/15
to harbou...@googlegroups.com
> Hi foxbase2.0,
>
>> ... I found your project.
>
> Which Harbour version did you download? The stable 3.0 or the nightly 3.2?

Ah, you mentioned Linux. There is no nightly download for Linux, so you
would have to compile it yourself. Or perhaps try Alain Aupeix's build
if you are on 64 bit Ubuntu

Regards,
Klas

Fox Pro

unread,
Jul 16, 2015, 12:21:32 AM7/16/15
to harbou...@googlegroups.com
> Which Harbour version did you download? The stable 3.0 or the nightly 3.2?

At first I was using old stable 3.0 .deb package. After your post I've
built .deb-package from git sources. I didn't found Alain Aupeix's
build.

> Do you mean SET(_SET_CODEPAGE, "cp866") or SET(_SET_CODEPAGE, "RU866")?
>
> If you mean what you wrote, and you are using HB32, you should get an
> error message from hbmk2 if you also requested that codepage:
>
> hbmk2: Error: Referenced, missing, but unknown function(s):
> HB_CODEPAGE_CP866()

Now, with HB32, it outputs russian text from CP866-encoded file with
both "cp866" and "RU866" in SET(_SET_CODEPAGE, <>). And, in
contradiction to your post, hbmk2 doesn't report any errors.

> If you did not request it, HB32 should give you a BASE/1302 runtime error.

I've commented SET(_SET_CODEPAGE...) and didn't get any runtime
errors, just broken text.

BTW, for UTF8-encoded version of file, text now fully displayed. I
suppose old Harbour used multibyte-character unaware version of
strlen() or something like that.

> Either way, start with:
> request hb_codepage_RU866

Works for me wtihout this, as I mentioned aboive.


And one important question is still left: is it possible to put
SET(_SET_CODEPAGE...) to something like config- or project-file to
keep sources unmodified?

foxba...@gmail.com

unread,
Jul 16, 2015, 12:45:48 AM7/16/15
to harbou...@googlegroups.com, cyber...@tiscalinet.it
SET FILECASE UPPER
SET FILECASE LOWER
and
set(SET_FILECASE), this one IIRC gives back a numeric value

Hi. Thank you, but it didn't worked for me. I've created X1.PRG file and tried to call it from other file by `do x1'. hbmk2 reports error about undefined reference to `HB_FUN_X1' with and without SET FILECASE with both cases. changing .PRG extension to lower-case doesn't help either. It compiles only when I change to lower-case the whole filename.

And here other problem arise: when I try to run binary file, it reports: Unrecoverable error 9012: Can't locate the starting procedure: 'MAIN'.

I didn't looked in all project files, but it seems there are no functions. Programs call to each other by `do <filename>' using the whole file as a function, I suppose. Execution starts as 'mfoxplus <the-main-file>'.

Is it possible to tell that entry point is just at the beginning of that main file without modifying it?

FoxPro is not supported AFAIK. I suppose that setkey() does the same. You can use maybe a preprocessor directive :
#command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
but I am not sure because the equal sign probably is not allowed.

 Where should I put this macro?

foxba...@gmail.com

unread,
Jul 16, 2015, 1:05:47 AM7/16/15
to harbou...@googlegroups.com, cyber...@tiscalinet.it
FoxPro is not supported AFAIK. I suppose that setkey() does the same. You can use maybe a preprocessor directive :
#command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
but I am not sure because the equal sign probably is not allowed.

 Where should I put this macro?

I put it to the same source file and it seems working for me, modulo Error BASE/1003  Variable does not exist <variable-name> for original name. So I had to use NIL instead.

Alain Aupeix

unread,
Jul 16, 2015, 3:55:21 AM7/16/15
to harbou...@googlegroups.com
Le 16/07/2015 06:21, Fox Pro a écrit :
>> Which Harbour version did you download? The stable 3.0 or the nightly 3.2?
> At first I was using old stable 3.0 .deb package. After your post I've
> built .deb-package from git sources. I didn't found Alain Aupeix's
> build.
Here (just a 64 bits version) :

http://jujuland.pagesperso-orange.fr/ubuntu.html

I update it from time to time ...

Here are the included components :

! Component: 'zlib' found in
/opt/TuxPrograms/trunks/harbour/src/3rd/zlib (local)
! Component: 'pcre' found in
/opt/TuxPrograms/trunks/harbour/src/3rd/pcre (local)
! Component: 'gpm' found in /usr/include
! Component: 'curses' found in /usr/include
! Component: 'x11' found in /usr/include

Here are the included contribs :

hbmk2: Destination mise à jour: ../lib/linux/gcc/libminizip.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/librddsql.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbxpp.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbunix.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbtip.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbssl.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbnetio.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbmzip.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbmemio.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbfship.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbformat.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbexpat.a
hbmk2: Destination mise à jour: ../lib/linux/gcc/libhbct.a

Here are the missing contribs :

hbmk2[sddoci]: Erreur: Dépendance manquante: ocilib
hbmk2[rddads]: Erreur: Dépendance manquante: ads

The deb has been updated today.

I have also update my script which builds Harbour, FiveLinux and HwGui.
It doesn't build hbqt anymore, online on the same page ... Don't forget,
if you want to build by yourself, to install needed dev's packages for
the contribs you want to use.

For the structure of your application, just replace Procedure <name>
with Function main ()
And, even it could be a pain to do, replace all the procedures by
functions and also, obviously all the do <procedure> with <parameters>
by <function>(<parameters>)

A+
--
------------------------------------------------------------------------
Alain Aupeix
http://jujuland.pagesperso-orange.fr/
http://pissobi-lacassagne.pagesperso-orange.fr/
------------------------------------------------------------------------
U.buntu 12.04 | G.ramps 3.4.9-1 | H.arbour 3.2.0dev (2015-07-03 09:22) |
HbIDE (Rev.316) | Five.Linux (r143) | Hw.Gui (2466)
------------------------------------------------------------------------

foxba...@gmail.com

unread,
Jul 16, 2015, 4:33:19 AM7/16/15
to harbou...@googlegroups.com
The deb has been updated today.
 
It seems to be broken for me. dpkg and archive manager report about unexpected EOF.

Here is md5:
2cbf461b5c382eeec7fdf10ce7c7896f  r2015-07-14-15:51_harbour_3.2.0-1_amd64.deb

For the structure of your application, just replace Procedure <name>
with Function main ()

You looks optimistic. There is no functions and procedures at all. Files just start with commands, e.g. `set cent on' or `@ #, # say "blah-blah"'.
But if I had only to modify one, main file, it'll be acceptable for me.
 
And, even it could be a pain to do, replace all the procedures by
functions and also, obviously all the do <procedure> with <parameters>
by <function>(<parameters>)

To be honest, I've grep'ped a dozen of PROCs in one file. The only file between 98 PRGs and 42 PRLs! I think the project was started by really Determined Real Programmer(s)!
And that procedures doesn't have parameters.

Alain Aupeix

unread,
Jul 16, 2015, 5:49:43 AM7/16/15
to harbou...@googlegroups.com
Le 16/07/2015 10:33, foxba...@gmail.com a écrit :
>
> The deb has been updated today.
>
>
> It seems to be broken for me. dpkg and archive manager report about
> unexpected EOF.
I have a problem with this provider ... the file is correctly upload
with filezilla, but when tryind to donwload it with Firefox or Qupzilla,
the down load is bad, and the size is about 6 Mo instead of 19 Mo.

So, I move it on dropbox, and he link has been updated on my web site.
If problem don't forget to reload the page (Ctrl-F5)
> But if I had only to modify one, main file, it'll be acceptable for me.
Yes, it could be enough, harbour finding then a function main will not
fail due to it
>
> And, even it could be a pain to do, replace all the procedures by
> functions and also, obviously all the do <procedure> with
> <parameters>
> by <function>(<parameters>)
>
>
> To be honest, I've grep'ped a dozen of PROCs in one file. The only
> file between 98 PRGs and 42 PRLs! I
What are PRL files ?
> think the project was started by really Determined Real Programmer(s)!
???
> And that procedures doesn't have parameters.
no problem => function()

A+
--
------------------------------------------------------------------------
Alain Aupeix
http://jujuland.pagesperso-orange.fr/
http://pissobi-lacassagne.pagesperso-orange.fr/
------------------------------------------------------------------------
U.buntu 12.04 | G.ramps 3.4.9-1 | H.arbour 3.2.0dev (2015-07-14 15:51) |
HbIDE (Rev.316) | Five.Linux (r143) | Hw.Gui (2468)
------------------------------------------------------------------------

foxba...@gmail.com

unread,
Jul 16, 2015, 7:11:42 AM7/16/15
to harbou...@googlegroups.com
> But if I had only to modify one, main file, it'll be acceptable for me.
Yes, it could be enough, harbour finding then a function main will not
fail due to it

I have found better approach: I created a separate file with MAIN() func, and in that function I at first set locale and then call that <real-main-file>. So now it is possible to have original source unmodified and use them in DOS/old Windows, executing `mfoxplus <real-main-file>' and possible to compile them with Harbour.
What are PRL files ?
I don't really know the difference between PRL and PRG files, all of them contain similar looking code. Just most of PRL files contain menus: i.e. they draw it with bunch of `say' instruction, await digit from user and then use CASE to call appropriate function (file, to be precise).
> think the project was started by really Determined Real Programmer(s)!
???
"The determined Real Programmer can write FORTRAN programs in any language." (C)

foxba...@gmail.com

unread,
Jul 16, 2015, 7:15:02 AM7/16/15
to harbou...@googlegroups.com
> possible to compile them with Harbour.
Theoretically, of course. Because there are still file case issue and some syntax errors.

Alain Aupeix

unread,
Jul 16, 2015, 9:02:11 AM7/16/15
to harbou...@googlegroups.com
Le 16/07/2015 13:11, foxba...@gmail.com a écrit :
> The determined Real Programmer can write FORTRAN programs in any
> language." (C)
> --
When I was younger, I convert programs written in Fortran 66 to Fortran
77. I know that a Fortran 90 has existed, but now, I don't know which is
the version.
The programmers who were not real programmers were students who uses
Fortran instead of Cobol, which was more usable for what they done.
I really think that fortran must be use for calculation, and not for
gestion.
Fortran is so performant for calculation, that's it's quite impossible
to convert it to another language like clipper, foxpro ...

So, the conclusion is that 'Determined Real Programmer' is an type of
guy who doesn't exist :)

Daniele Campagna

unread,
Jul 16, 2015, 1:45:57 PM7/16/15
to harbou...@googlegroups.com
Il 07/16/2015 06:45 AM, foxba...@gmail.com ha scritto:
SET FILECASE UPPER
SET FILECASE LOWER
and
set(SET_FILECASE), this one IIRC gives back a numeric value

Hi. Thank you, but it didn't worked for me. I've created X1.PRG file and tried to call it from other file by `do x1'. hbmk2 reports error about undefined reference to `HB_FUN_X1' with and without SET FILECASE with both cases. changing .PRG extension to lower-case doesn't help either. It compiles only when I change to lower-case the whole filename.

set filecase changes the way your program manages filenames, not hbmk2 behaviour. At compile time kbmk2 is case-sensitive, as Linux is.

 
And here other problem arise: when I try to run binary file, it reports: Unrecoverable error 9012: Can't locate the starting procedure: 'MAIN'.

you need a main() procedure: simply put as first statement in the main .prg file:
procedure main
and terminate with a:
return

I didn't looked in all project files, but it seems there are no functions. Programs call to each other by `do <filename>' using the whole file as a function, I suppose. Execution starts as 'mfoxplus <the-main-file>'.

One step at a time: try to enclose the main program in procedure main...return and report what happens


#command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
but I am not sure because the equal sign probably is not allowed.

 Where should I put this macro?
before "procedure main":

#command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
procedure main
parameters a,b,c...
...
return

The main differences between procedures and functions are:
functions give back to the caller a return value
procedures treat parameters as private variables, while functions treat them as local.

HTH

PS I sent this mail 8 hours ago but I notice now that I sent it directly to the OP's address (a decision Thunderbird took automagically) , so I resend to the mail list. Sorry...

Dan

Klas Engwall

unread,
Jul 16, 2015, 5:05:20 PM7/16/15
to harbou...@googlegroups.com
Hi foxbase2.0,

> SET FILECASE UPPER
> SET FILECASE LOWER
> and
> set(SET_FILECASE), this one IIRC gives back a numeric value
>
> Hi. Thank you, but it didn't worked for me. I've created X1.PRG file and
> tried to call it from other file by `do x1'. hbmk2 reports error about
> undefined reference to `HB_FUN_X1' with and without SET FILECASE with
> both cases. changing .PRG extension to lower-case doesn't help either.
> It compiles only when I change to lower-case the whole filename.

That is a runtime setting, so it will help when the application is
compiled and linked and starts opening data files.

What you need right now is a compiler switch that does the same thing
for source code files. There is such a switch -fn that you can try (I do
not have an environment where I can test it). Type

harbour --help | more

to see info about the switch and its options. You should probably
specify -fn:u

> And here other problem arise: when I try to run binary file, it reports:
> Unrecoverable error 9012: Can't locate the starting procedure: 'MAIN'.

You need a main() procedure at the top of the first source file, and a
matching return at the end, that is all. But I think that was cleared up
elsewhere in the thread.

> I didn't looked in all project files, but it seems there are no
> functions. Programs call to each other by `do <filename>' using the
> whole file as a function, I suppose. Execution starts as 'mfoxplus
> <the-main-file>'.

That was the original dBase way to write modular code. The user had all
the source code files, plain or converted to an internal dBase format,
in the runtime directory. The interpreter loaded the source code file
specified after the DO command and ran it from the top. Clipper
supported that syntax for compatibility, and so does Harbour. It it not
considered "elegant", but it works.

Clipper and Harbour by default add an implicit start procedure for each
source code file at compile time. That procedure has the same name as
the .prg file. There is a -n compiler switch to turn that feature off.
We use that switch when the source code files have named procedures at
the top or file-wide variable declarations before the first procedure in
a file. In your case, leave the -n switch out, and you should be fine,
once you have solved the file case problem in your Nix environment.

> Is it possible to tell that entry point is just at the beginning of that
> main file without modifying it?
>
> FoxPro is not supported AFAIK. I suppose that setkey() does the
> same. You can use maybe a preprocessor directive :
> #command ON KEY=<nVal> DO <cFu> => setkey(<nVal>,<cFu>)
> but I am not sure because the equal sign probably is not allowed.
>
> Where should I put this macro?

You could put the macro at the top of each source code file that needs
it, before anything else. Or you could put it in a header file, once and
for all, and #include that header file in the source code files instead.
That makes it easier to maintain.

Regards,
Klas

Klas Engwall

unread,
Jul 16, 2015, 5:20:11 PM7/16/15
to harbou...@googlegroups.com
Hi Fox Pro,

>> Which Harbour version did you download? The stable 3.0 or the nightly 3.2?
>
> At first I was using old stable 3.0 .deb package. After your post I've
> built .deb-package from git sources.

Great :-)

> I didn't found Alain Aupeix's build.

I left it to Alain to advertise it :-)

>> Do you mean SET(_SET_CODEPAGE, "cp866") or SET(_SET_CODEPAGE, "RU866")?
>>
>> If you mean what you wrote, and you are using HB32, you should get an
>> error message from hbmk2 if you also requested that codepage:
>>
>> hbmk2: Error: Referenced, missing, but unknown function(s):
>> HB_CODEPAGE_CP866()
>
> Now, with HB32, it outputs russian text from CP866-encoded file with
> both "cp866" and "RU866" in SET(_SET_CODEPAGE, <>). And, in
> contradiction to your post, hbmk2 doesn't report any errors.

Well, the errors I mentioned were the exact errors I got when testing
those different scenarios. But if it works for you, I am not going to
complain :-)

>> If you did not request it, HB32 should give you a BASE/1302 runtime error.
>
> I've commented SET(_SET_CODEPAGE...) and didn't get any runtime
> errors, just broken text.
>
> BTW, for UTF8-encoded version of file, text now fully displayed. I
> suppose old Harbour used multibyte-character unaware version of
> strlen() or something like that.

There is an entirely new codepage system in HB32. It is based on UTF8
and converts back and forth between UTF8 and the codepage specified with
Set(_SET_CODEPAGE). It provided us with many new possibilities.

>> Either way, start with:
>> request hb_codepage_RU866
>
> Works for me wtihout this, as I mentioned aboive.
>
> And one important question is still left: is it possible to put
> SET(_SET_CODEPAGE...) to something like config- or project-file to
> keep sources unmodified?

No, you have to compile settings like that into the application. But you
only need to do it once, at the top of the main() procedure.

Regards,
Klas

Klas Engwall

unread,
Jul 16, 2015, 5:29:47 PM7/16/15
to harbou...@googlegroups.com
Hi Alain,

> For the structure of your application, just replace Procedure <name>
> with Function main ()
> And, even it could be a pain to do, replace all the procedures by
> functions

Why is that? What is the point in using a function when there is no
return value? I did a quick grep in the Harbour repository and got 1395
instances of the PROCEDURE statement back, 72 of them in hbmk2.prg :-)

> and also, obviously all the do <procedure> with <parameters>
> by <function>(<parameters>)

I would consider that as a cleanup job in a much later step. The DO
syntax is still supported.

Regards,
Klas

Влад Ермаков

unread,
Jul 17, 2015, 2:00:17 AM7/17/15
to harbou...@googlegroups.com
First of all, DOSBox isn't a solution in this case, because it doesn't support printing (in official version, although there is so-called "DosBox Megabuild" with such support, but I had troubles with it anyway)

Then, I doubt that you can simply recompile Foxbase sources with Harbour without serious modifications. Please, contact me directly, maybe I can help you with some puzzling questions.

2015-07-16 14:15 GMT+03:00 <foxba...@gmail.com>:
> possible to compile them with Harbour.
Theoretically, of course. Because there are still file case issue and some syntax errors.

--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Reply all
Reply to author
Forward
0 new messages