Tuesday, March 3, 2009

What is HMG ?

CCH: I was just introduced to freeware Harbour Mini-GUI(HMG) by esgici of Viva Clipper, an old Clipper pal from way back to the DOS days. Just downloaded it and am now checking it out... It is interesting enough for me to join the HMG Forum :-)

From Harbour MiniGui Google Pages

Welcome, my name is Roberto Lopez.

When Windows turned into the standard operating system for PC, I've got disappointed with the new programming languages developed for it.

In my opinion, in most cases, these new languages constituted a step back in computer science evolution, because, the code become bigger, less intuitive and more complex that in previous generation.

Original xBase was powerful, simple and intuitive. It's Windows incarnations and new mainstream Windows tools, loosed this features, turning the things more and more harder.

In 2000 I've discovered the Harbour project, a fully new, free multi-platform Clipper based compiler.

Some time later, I've began experimenting with Harbour-C interface and MinGW compiler. I've finally realized that my old "dream" could be possible. Create a free Windows tool with the original xBase spirit (powerful, intuitive and easy to use).

Harbour MiniGUI is aimed to be "natural". The basic idea behind it, is let to the programmer to express its ideas in a straight way, using a simple code, easy to write and easy to maintain, turning its work more productive

Harbour MiniGUI license is GPL+"Harbour Exception", so your use of that executable is in no way restricted on account of linking the library code into it.



As extracted verbatim from HMG Forum (By Roberto Lopez, Founder of HMG)

Well.. for the new people approaching HMG I can say that this is a mix between one of the best programming and data manipulation languages ever created (xBase) and the VB/RapidQ GUI handling style.

All GUI object are public and can be created and managed with very simple code.

The basic components of HMG are:
  • Harbour Compiler (generates C code from xBase code).
  • Harbour MiniGUI library (functions and preprocessor directives to handle GUI).
  • MingW Compiler.
  • Harbour MiniGUI IDE (Optional tool for two-way visual design).
What are the main project goals ?
To keep the GUI handling as easy, elegant and clean as possible and the library core as compact, stable and reliable as we can.

It implies, that the changes to the core will be subject to very strict test prior tag a specific build as 'stable'.

Other of the main goals is to hide the complexities associated with the operating system internals, allowing to the programmer, focus on his application, instead OS technical things.


So, what is the place for experimentation and exciting new 'things' ?
The User components interface, of course.

I've created to let to any HMG user to add fully new GUI elements, or add properties and events to existing ones.

Where is the HMG site ?
http://harbourminigui.googlepages.com


Where can I download HMG ?

http://harbourminigui.googlepages.com


Why Roberto doesn't answer my messages ?
:)
I have a very little free time for HMG right now. Anyway I'm reading and answering the Sorceforge's HMG bug tracker and Wish tracker, almost daily, please use it.


Does HMG will be 'real' OOP some day in the future ?


Who knows :)



Comments on HMG by Sudip Bhattacharyya

Hi Friend,

I am a very novice user of MiniGUI and I am not an expert. I found
that it works in Windows platform. And I can develop software with
MiniGUI (not very complex right now).

If I am not wrong, there are two flavors of MiniGUI. One is HMG
(Harbour Mini GUI) developed by Roberto Lopez. You can download it
from http://harbourminigui.googlepages.com/. (Here you can download
HMG with Harbour and MinW C++ - A complete package).

And another is MiniGUI extended, which is developed by MiniGUI Team
(Grigory Filatov,Jacek Kubica,Janusz Pora) based on Roberto Lopez's
original MiniGUI.
You can download it from http://www.hmgextended.com/.

There are also 2 types of HMGExtended downloads : 1) HMG with Harbour
compiler 2) HMG Lite without Harbour / xHarbour compiler.

Forum address is http://tech.groups.yahoo.com/group/harbourminigui/.

Help file for MiniGUI is excellent! Lots of samples. Right now I am
learning with it.

It's a very good product.

With best regards.

Sudip Bhattacharyya

Monday, March 2, 2009

what's the difference between GTWVT and GTWVG?

CCH: In an effort to 'guify' FAS4XHB.EXE, I wanted to retain the procedural approach (i.e no events-driven stuff)
I was advised by Ron Pinkas not to use gtwvw but to take a look at WVT & WVG

I found this interesting article by Clipper... Clipper...Contributor, Pritpal bedi of Harbour Project.

Response by Pritpal Bedi to a post dated 20th Nov 2007
entitled Gtwvt + Wvtgui = Gtwvg : xHarbour => Harbour

If used as pure console "NOTHING".

If used with GUI extensions, very appealing Windows screens without
sacrificing the Clipper syntax.

To have a bird's eyeview what we can achieve with GTWVG, visit:
http://www.vouchcac.com/ScreenShots/ScreenShots.htm
Though these screens are fairly old, the latest ones have toolbars etc too,
but even then you can have a fairly good overview. To just emphasize, this
lib does not change the way you write code, instead, provide mechanism to
enhance your code to give a GUI look.

This is one of my appln converted to GTWVG (Harbour) GTWVT+WVTGUI
(xHarbour).

Additionally GTWVG has a nice set of Wvt*Classes() which employ the common
event loop. You can create high performance dialogs with multiple Tbrowe,
Reads, Bitmaps, Buttons, i.e. all GUI elements you can think of.

More, you can open multiple pure Windows dialogs MODELESS or MODEL from
within your Clipper syntax.

I suggest you to experiment with xharbour/contrib/wvtgui/tests/wvtgui.prg to
learn more about these features. In future I will write a comprehensive
documentation.

If group agrees and someone more gifted developer join hands, these graphic
elements can be embedded with base GT to avoid additional code to be written
by the developer.

Based on GTWVG I am working on another libarry GTWVM ( Multiple Console
Terminal Driver ) just like in XBase++. There you can open multiple consoles
in an application containing its own GT and GUI elements and having its own
processing loop independant of others. It requires deep changes into GT core
code, which at the minimum needs a unique identifier for each GT command. I
have achieved a little bit but seems it is a long way to go, and perhaps, at
my own I cannot do everything. If group decided I can show a prototype of
what I am trying to achieve.

Hope you must be clear about the differences of GTWVT and GTWVG.

Regards
Pritpal Bedi, INDIA-USA

Sunday, March 1, 2009

Why you should recompile your CA-Clipper DOS applications to Win32

CA-Clipper for DOS was, once hugely popular amongst Xbase programmers from Summer'87 right up to Version 5.2e. Apparently, 5.3 onwards were not vey popular. Even now, it is amazing to discover that there are still many CA-Clipper programmers out there. However, CA-Clipper for DOS programs don't do well under Windows, and may not run at all in Win'98, ME, XP , Vista or on fast processors, or they may have problems printing. In addition , the interface is text-based , hogs processor time which slows everything else down, and can't communicate with Windows programs.

So what's the solution & I am not talking of GUI ?

Simple, recompile your existing CA-Clipper source codes using a 32-bit CA-Clipper compatible compilers such as the Harbour Project, xHarbour or Xbase++. If you prefer open-source the Harbour Project & xHarbour will definitely be your choice. However, if you require more support, I guess that xHarbour.com & Xbase++ will be the way to go.

Clarification from Ron Pinkas

xHarbour is first and foremost a free open source project, exactly as
Harbour.

In *addition* to being completely free, it's *also* distributed by
xHarbour.com, as a commercial distribution that includes numerous Add-on
Tools & Libraries, as well as tech support services.

Needless to say, the existence of the xHarbour.com commercial distribution
does not take away from the freedom of xHarbour, the opposite it provides
even more resources to the free project.


So what are the benefits of having your familiar CA-Clipper application as a true Windows 32-bit Executable ?

A quick list of the benefits of being a true Windows application is that it can:
  • Utilize all the available memory, no more DOS boundaries
  • Use bigger sized variables, no more limits such as 4096 array elements, 64K data segment, etc.
  • Use any kind of printer installed on Windows, including network printer, Fax printer, PDF printer, etc.
  • Use Windows resources easily, eg. clipboard, common dialogs, etc
  • Collaborate with other Windows application, eg. Excel, Internet Explorer, etc.
You may want to read about my own experience in porting a sizeable real-life Accounting application (still in use in some customers) from CA-Clipper 5.2e to xHarbour

How to use DBFCDX in Xbase++ ?

CCH : This is a good posting by Clayton Jones on 10th July 2008 in the Alaska public.xbase++.clipper-migration newsgroup about using DBFCDX in a Xbase++ application


Jorge : can anybody tellme if this definition generate indexes 101% compatible with clipper 5.2
dbeSetDefault( 'DBFCDX' )
dbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )

Clayton :

I'm not sure about 101% but this does create index files compatible with Clipper 5. The main thing is this line creates CDX index files without an internal collation table. This DBFCDX configuration will still use Clipper DBFs with DBT memo files.

If the full Comix RDD is needed (FPT memo files) the DBF side of the DBE must also be configured. This requires two more lines

dbeinfo(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_2X)
dbeinfo(COMPONENT_DATA,FOXDBE_CREATE_2X,.T.)

These lines set the lockmode and make it create DBF files with the proper signature byte and FPT memo files. This combination is Fox 2x compatible. Here is the full code to set this up

******** FOX Data Component
IF ! DbeLoad( "FOXDBE", .T.) // hidden
MsgBox("Database engine FOXDBE not loaded")
ENDIF

************** CDX Order Component
IF ! DbeLoad( "CDXDBE",.T.) // hidden
Msgbox("Database engine CDXDBE not loaded")
ENDIF

******* Build FOX/CDX engine
IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
MsgBox("FOXCDX database engine could not be created")
ENDIF

dbeSetDefault("FOXCDX")

******* Configure for Clipper/Comix
dbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )
dbeinfo(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_2X)
dbeinfo(COMPONENT_DATA,FOXDBE_CREATE_2X,.T.)

I hope this helps.


Regards,
Clayton

Clayton Jones www.cjcom.net
Top-Down Library for Xbase++
X-DBU Database Utility
X-MEMO Memo Field Replacement

CA-Clipper is Alive & Well ! [5th November 2009]

I am simply amazed that the Clipper Language (in the form of CA-Clipper, Xbase++, Harbour, xHarbour & CA-Visual Objects) is still being used by Clipperheads from 103 countries since this blog started on 26th January 2009, latest in May 2009 from Burkina Faso(4/5/09), Cote D'ivoire(5/5/09), Guyana (8/5/09), Macau (22/5/09), Libyan Arab Jamahiriya(23/5/09), Ghana, Nepal (8/6/09), Cameroon (28/6/09), Mauritius (7/7/09), Montenegro(2/8/09), French Polynesia, Senegal (20/10/09), Trinidad and Tobago (5thNov 2009)

As at 5th November 2009, we now have more than 16,800 unique visitors from Europe, Africa & Middle-east, North, Central & South America & the Asia-Pacific as follows :-

Europe
  1. Austria (4/9, 9), Steiermark(Graz, Leoben, Radmer), Wien (Vienna) , Tirol(Innsbruck, Sillian,Jenbach, Kitzbühel ), Saltzburg(Angerberg)
  2. Belarus(5,7), Vitsyebskaya Voblasts(Novolukoml, Rossony, Vitebsk), Minsk, Homyel'skaya Voblasts'(Gomel), Brestskaya Voblasts'(Brest), Hrodzyenskaya , Hrodzyenskaya Voblasts'(Grodno), Voblasts(Hrodna)
  3. Belgium (10/10,31),Namur, Antwerpen(Hoboken, Merksem, Deurne, Antwerp,Edegem, Mol, Grobbendonk, Kontich, Schoten, Mechelen, Wijnegem, Brecht), Brabant(Diegem, Nivelles, Meise, Sint-genesius-rode), Liege(Amay, Sprimont, Verviers), West-vlaanderen(Avelgem, Damme, Brugge, Blankenberge,), Oost-vlaanderen (Lede, Zottegem, Gent), Hainaut(Charleroi), Limburg(Hamont, Kerkrade,), Liege(Esneux. Tilff), Oost-vlaanderen(Temse), Liege(Liège, Verlaine, Saint-Georges, Fize-fontaine)
  4. Bosnia-Herzigovina(4,5), Mostar, Sarajevo, Novi Travnik, Republika Srpska(Banja Luka,Foca)
  5. Bulgaria(8,8), Pleven(Levski), Varna, Grad Sofiya(Sofia), Gabrovo, Burgas, Montana, Plovdiv, Vratsa(Kozloduj)
  6. Croatia(11,21), Grad Zagreb (Zagreb,Samobor, Zapresic), Varazdinska(Varazdin, Belec), Krapinsko-zagorska(Donja Bistra), Sisacko-moslavacka(Sisak), Primorsko-goranska(Grobnik, Krk, Ogulin, Lopar,Rijeka, Novi Vinodolski), Splitsko-dalmatinska(Bol, Split), Pozesko-slavonska(Pozega, Djakovo), , Licko-senjska(Senj), Dubrovacko-neretvanska(Dubrovnik), Istarska(Zminj), Karlovacka(Karlovac), Varazdinska(Donji Kraljevec)
  7. Cyprus(1,1), Nicosia, Osjecko-baranjska(Osijek), Limassol(Lemesos)
  8. Czech Republic(3/13,5), Moravskoslezsky Kraj(Hluchin, Ostrava), Stredocesky Kraj(Mlada Boleslav),Hlavni Mestro Praha(Praque, Praha)
  9. Denmark(2,2), Staden Kobenhavn(Copenhagen), Viborg
  10. Estonia, Harjumaa(Tallinn)
  11. Finland(2,4), Southern Finland(Helsinki, Järvenpää, Kaarenkylä),Western Finland(Turku)
  12. France (13/26,36) from Lorraine(Metz), Bretagne(Saint-brieuc, Penguily,Telgruc-sur-mer), Languedoc-roussillon(Montpellier), Rhone-alpes(échirolles, Baix, Lyon, Ambérieu-en-bugey, Annecy-le-vieux), Sorel-moussel , Aquitaine(Bordeaux, Saint-front-de-pradoux), Centre(Saint Aignan, Tours), Midi-pyrenees(Albi), Ile-de-france(Noisy-le-grand, Neuilly-sur-seine,Issy-les-moulineaux,Paris, Vincennes, Maisons-alfort, Le Chesnay, Coulommiers, Montgeron,Pantin ), Nord-pas-de-calais(Haubourdin, Valenciennes), Poitou-charentes(Cognac), Haute-normandie(Rouen, Le Havre), Champagne-ardenne(Reims, Troyes), Haute-normandie(Le Havre), Bretagne(Quimperlé, Vannes), Provence-alpes-cote D'azur(Aix-en-provence)
  13. Germany (16/16,138), Berlin, Bremen, Baden-Wurttemberg(Abtsgmünd, Aulendorf, Schwäbisch Gmünd, Riedlingen, Gomaringen, Ludwigsburg, Leinfelden-echterdingen, Sigmaringenn, Rottenburg, Fellbach, Bad Waldsee, Freiburg, Schwann, Asperg, Oftersheim, Mannheim, Stuttgart, Hornberg, Pforzheim, Weil Der Stadt, Karlsruhe, Meckesheim, Bruchsal, Kressbronn, Heidelberg), Bayern(Klaus, Harlaching, Mainburg, Grasbrunn, Gammelsdorf, Neustadt Am Kulm, Edling, Mespelbrunn, Oberappersdorf, Neutraubling, Fürstenfeldbruck, Rütschenhausen, Gaißach, Hilpoltstein, Germering, Hof, Wolnzach, Hahnbach, Elsendorf, Neufahrn, Röthlein, Hirschaid, Bad Tölz, Sonthofen, Munich, Fürth, Eglharting, Germering, Nuremberg,Hersbruck, Roth, Baierbrunn), Brandenburg(Templin), Frankfurt Am Main, Hamburg, Hessen(Gießen, Wald-michelbach, Vellmar, Kassel, Weilburg, Offenbach, Eschborn, Bad Nauheim, Bad Vivel, Darmstadt, Eschwege, Friedberg, Friedrichsdorf, Griesheim, Großalmerode, Hattersheim, Herbelhausen, Kronberg, Rosbach, Wiesbaden, Kelsterbach, Viernheim, Wellburg), Niedersachsen(Giesen, Hanover, Aurich, Achim, Edemissen, Moisburg, Barleben, Hameln, Oldenburg, Wunstorf, Osnabrück, Wolmirstedt) , Nordrhein-westfalen (Bergkamen, Duisburg, Paderborn, Wipperfürth, Köln,Pulheim, Bielefeld, Essen, Gütersloh, Verl, Wuppertal, Wese, Hamm, Iserlohn, Senden, Mechernich, Drensteinfurt, Münster, Titz, Oberhausen, Erwitte ), Mecklenburg-vorpommern(Bergen), Rheinland-pfalz (Gillenfeld, Zweibrücken, Altrip, Hirschberg, Rödersheim-gronau, Kaiserslautern, Mainz, Grünstadt, Koblenz, Ludwigshafen), Schleswig-holstein(Lübeck, Roseburg, Kiel), Sachsen-anhalt(Halle, Barleben, Egeln, Blankenburg, Wernigerode, Cattensted, Beesenlaublingen,BerBel, Hornhausen, Schönebeck, Halberstadt, Wolfen, Magdeburg,Quedlinburg, Altenweddingen), Sachsen(Dresden), Thuringen(Jena, Unterpörlitz)
  14. Greece(11,15), Attiki(Athens, Spétsai) , Thessalonki, Xanthi(Xánthi), Magnisia (Vólos), Rodhopi(Komotiní), Korinthia(Corinth, Kórinthos), Argolis(árgos, Kranídion), Lakonia(Stoúpa), Kavala(Kavála) ,Thessaloniki(Thessaloníki), Kranídion, Argolis, Florina(Flórina),Argolis( árgos), Rodhopi(Komotiní)
  15. Hungary(17,25), Bacs-kiskun(Csólyospálos), Baranya(Kozármisleny), Budapest, Fejer(Székesfehérvár, Dunaújváros), Bekes(Békéscsaba, Mezobereny), Debrecen, Gyor, Pest(Gyomro), Gyor-moson-sopron(Dunakiliti, Sopron), Hajdu-bihar(Zsáka), Szabolcs-szatmar-bereg(Mátészalka), Somogy(Kaposvár), Pecs(Pécs, ), Szeged, Veszprem(Balatonalmádi), Hajdu-bihar(Téglás), Nograd(Szécsény), Borsod-abauj-zemplen(Méra), Komarom-esztergom(Tatabánya, Komárom), Pest(Diósd, Törökbálint), Pest(Budakeszi)
  16. Iceland(1,1), Gullbringusysla(Reykjavík)
  17. Ireland(2,3) Dublin(Rathfarnham,Dublin), Roscommon
  18. Italy (17/21,103) , Giulia Abruzzi(Pescara), Basilicata(Matera), Calabria(Cosenza), Campania(Torre Del Greco, Casalnuovo Di Napoli, Frattamaggiore, Teggiano, Naples, San Giorgio A Cremano, Battipaglia), Emila-romagna (Concordia Sulla Secchia, Bagnolo In Piano, Rubiera, Bologna, Imola, Modena, Forl, Viadanaì, Albinea), Lazio (Rome, Monte Porzio Catone, Monterotondo) , Liguria (Savona, Genoa,Verezzo, Osiglia), Lombardia(Vittuone, Isorella,Monza, Vertova, Varese, Brescia, Milan, Marcallo Con Casone,Castelli Calepio, Vimodrone), Piemonte(Alessandria, Chieri, Settimo Torinese, Casale Monferrato, Alba, Cuneo, Desana, Turin, Novara, Moncalieri, Verceli, Cuorgnè, Bussoleno), Puglia(Galatina, Bari, Barletta, San Cesario, Foggia, Cerignola, Alberobello, Modugno, Casamassima), Friuli-venezia Giulia(San Giovanni Al Natisone,Trieste, Pordenone, Monfalcone, Gorizia, Friuli-Venezia Giulia), Sicilia(Gela, Canicattì, Aci Catena,Ragusa, San Gregorio Di Catania, San Giovanni La Punta, Bagheria, Palermo, Caltagirone, Misterbianco, Messina, Syracuse, Catania, Torregrotta), Sardegna(Muravera, Sennori, Nuoro, Ozieri, Quartucciu, Cagliari, Elmas, Palau), Toscana(Lucca, Leghorn, Pisa Prato, Pistoia, Florence,), Trentino-alto Adige (Caldaro, Adige, Trento, Bolzano, Mezzolombardo), Veneto(Mestre, Verona, Padova, Vicenza, Montecchio Maggiore, Torri Di Quartesolo), Umbria(Foligno)
  19. Latvia(2,2), Riga, Ventspils
  20. Lithuania(2,2), Kauno ApskrKaunas), Vilniaus Apskritis(Vilnius)
  21. Luxembourg(2,6), Diekirch(Erpeldange,Schoos), Luxembourg(Soleuvre, Luxembourg, Rollingen, Strassen)
  22. Macedonia(1) Macedonia(Gostivar), Karpos(Skopje), Veles, Kicevo
  23. Moldava(1) Chisinau
  24. Montenegro(1), Podgorica
  25. Netherlands (13,44), Noord-holland(Haarlemmermeer, Hilversum, Bussum, Den Helden, Amsterdam, Assendelft, Schiphol), Noord-brabant(Udenhout, Eindhoven,Prinsenbeek, Cranendonck, Breda), Flevoland(Almere, Marknesse), Utrecht(Nieuwegein, Vianen, Wijk Bij Duurstede, Bilthoven, Amerongen, Veenendaal, Bilthoven, Houten), Groningen(Usquert,Wagenborgen), Limburg(Tegelen, Roermond), Gelderland(Bennekom, Vaassen, Epe,Nijmegen ), Zuid-holland(Maassluis, Alphen, Krimpen, Leidschendam,, Rotterdam, Rijswijk, Den Haag, Wateringen, Hoek Van Holland, Delft, Capelle, Leiden,Noordwijk, Zoetermeer), Overijssel(Rijssen, Deventer, Holten), Gelderland(Arnhem), Drenthe(Meppel), Zeeland(Terneuzen)
  26. Norway(4,4) Hordaland(Loddefjord), Friesland(Franeker), Oslo, Sor-trondelag(Trondheim), More Og Romsda(Molde)
  27. Poland (34,84), Skierniewice(Radziejowice), Piotrkow(Zelów, Tomaszów Mazowiecki), Czestochowa(Lubliniec,Starokrzepice), Opolskie(Opole), Tarnobrzeg(Koprzywnica), Biala Podlaska(Miedzyrzec Podlaski), Ciechanow, Gdansk(Gdynia, Pomorskie, Trabki Wielkie), Podlaska, Bielsko (Bielsko-biala, Dankowice, Wadowice, Oswiecim, Kety, Skoczów,Babice), Dolnoslaskie(Wroclaw, Siedlecin), Jelenia Gora(Boleslawiec, Zgorzelec) , Kielce(Konskie,Swietokrzyskie), Kalisz(Mazury), Katowice(Dabrowa Gornicza, Zebrzydowice, Czerwionka, Zabrze, Gliwice,Tychy, Bytom, Ledziny, Chrzanów, Chorzów, Pyskowice, Bedzin, Starachowice, Pszczyna, Piekary Slaskie), Legnica(Lubin), Lodz(Lodzkie, Ozorków), Poznan (Grodzisk, Gniezno, Wielkopolski) , Bialystok(Lapy, Podlaskie) Pila, Malopolskie(Cracow), Radom(Jedlnia-letnisko), Rzeszow(Frysztak), Slaskie(Katowice), Walbrzych (Duszniki Zdrój,Nowa Ruda, Swidnica, Pieszyce), Wielkopolskie(Poznan), Warszawa (Kobylka, Opacz, Komorów, Brwinów, Warsaw, Pruszków, Blonie, Warszawa), Torun(Grudziadz), Zachodniopomorskie(Szczecin, Goleniów, Koszalin), Wloclawek(Polska, Przysiek, Ciechocinek), Radom, Bilgoraj(Zamosc) , Olsztyn(Ketrzyn,Warminsko-mazurskie ), Kalisz(Mazury), Kartow(Wieliczka), Suwalki(Gizycko), Nowy Sacz(Limanowa, Bialka), Przemysl(Jaroslaw), Bydgoszcz( Kujawsko-pomorskie, Sepolno Krajenskie, Inowroclaw), Tarnow(Lisia Góra), Krakow(Skawina), Tarnobrzeg(Janów Lubelski)
  28. Portugal(7,15), Porto(Maia, Vila Do Conde), Lisboa(Cascais, Lisbon, Sintra,Almargem Do Bispo, Amadora, Carnaxide), Braga (Santa Maria), Faro (Santa Bárbara De Nexe), Azores(Angra), Santarem(Santarém,
  29. Almeirim), Aveiro(Espinho, Esmoriz), Viana Do Castelo(Melgaço)
  30. Romania(16,16),Tulcea(Sarichioi), Ilfov(Buftea), Harghita(Miercurea-ciuc), Brasov, Iasi, Vaslui, Bistrita-nasaud(Vatra Dornei), Prahova(Ploiesti), Bucuresti(Bucharest), Botosani, Bihor(Oradea), Suceava(Radauti), Neamt(Piatra Neamt), Sibiu, Hunedoara(Hateg), Timis(Timisoara)
  31. Russian Federation(26,26), Tatarstan(Kazan) , Orel, Sakhalin(Yuzhno-sakhalinsk), Belgorod, Kemerovo, Kaluga(Obninsk)Moscow(Moscow City,Khimki), Pskov, Primor'ye(Vladivostok),Kaluga, Saratov, Yaroslavl'(Yaroslavl), Lipetsk, Saint Petersburg City(Saint Petersburg), Krasnodar(Lenina), Rostov(Rostov-na-donu),Krasnodar( Sochi), Khabarovsk, Yamal-nenets(Tarko-sale), Moskva(Dmitrov), Voronezh, Orenburg(Orsk), Sverdlovsk(Yekaterinburg), Orenburg(Buzuluk), ,Kemerovo(Novokuznetsk), Udmur(Izhevsk), Udmurt(zhevsk), Irkutsk
  32. Serbia(3, 17), Serbia Proper(Leskovac, Obrenovac, Pancevo, Belgrade,Beograd, Bela Palanka, Kragujevac, Dardania, Backa Topola, Kosovo, Nis, Beograd, Sabac), Vojvodina(Novi Sad, Zrenjanin)
  33. Slovakia(4,7) Bratislava, Banska Bystrica(Banská Bystrica, Rimavská Sobota, Rohovce, Rimavská, Zvolen), Zilina, Rohovce, Váhom, Nitra(Trnovec Nad)
  34. Slovenia(2,14), Bohinj(Lesce, Cerknica,, Lukovica, Ravne, Kranj, empeter, Ljubljana, Sempeter, Trzin, Novo Mesto, Kocevje, Logatec, Jesenice), Brezovica(Maribor, Ormoz)
  35. Spain (20,67), Pais Vasco(Vitoria), Islas Baleares(Palma), Aragon(Peraltilla,, Zaragoza, Teruel,), Andalucia(Cullera, El Puerto De Santa Maria, Cadiz, Granada, Jaén, Melilla, Servilia, Marbella, Mijas, Málaga, Dos Hermanas, Almería, Jerez), Comunidad Valenciana(Orihuela, Torrevieja, Comunidad Valenciana, Valencia, sueca, Elche, Novelda), Casti-la Moncha(Albacete), Castilla Y Leon(Burgos), Catalonia (Girona, Cassá De La Selva, Manresa, Badalona, Barcelona, Granollers, Gerona, Mataró, Salt, Solsona, Silis, Cardedeu), Canarias(Adeje, Las Palmas, Santa Cruz De Tenerife), Extremadura(Badajoz), Galicia(Pontevedra, Vigo, Lalín, Santiago De Compostela, A Coruña,), Islas Baleares, Murcia (Alcantarilla) , Madrid(Fuenlabrada, Alcorcón, Villaviciosa De Odón, Torrejón De Ardoz), Navarra (Tafalla, Pamplona), Pais Vasco(Irún, Gáceta), Cantabria(Santander), Sicilia(Vittoria), Santa Catarina(Itajaí, Joinville, Blumenau, Camboriú, Florianópolis), Castilla-la Mancha(Tomellos), Comunidad Valenciana(Elche), Asturias(Gijón)
  36. Sweden(7,9), Norrbottens Lan(Luleå), Stockholms Lan (Södertälje,Sollentuna,), Orebro Lan(Hällefors), Kalmar Lan(Kalmar), Uppsala Lan(Uppsala), Varmlands Lan(Sunne), Ostergotlands Lan(Linköping), Habo, Gotaland(Vastra), Blekinge Lan(ödeby)
  37. Switzerland(8,10, Bern(Wabern), Schaffhausen, Obwalden(Mörigen, Nods), Zurich(Zürich, Pfäffikon), Valais(Sion), Vaud(Lausanne), Ausser-rhoden(Herisau), Sankt Gallen(Walzenhausen)
  38. Turkey(7,8), Hatay(Antakya,Iskenderun), Istanbul, Ankara, Konya, Icel(Mersin), Trabzon, Bursa
  39. United Kingdom(38,41), from Hampshire(Southsea), Northamptonshire (Northampton), Nottinghamshire(Mansfield), Surrey(Surbiton), Greater London(Isleworth), Blackpool, Buckinghamshire(Buckingham) Cambridgeshire (Cambridge,Ely), Cheshire(Winsford), Coventry, Devon(Barnstaple), Derbyshire(Derby), Glasglow(Glasgow City), West Sussex(Burgess Hill ), Gloucestershire(Gloucester), Kirklees(Huddersfield), Leicestershire(Hinckley), London, Milton Keynes, New Hampshire(Manchester), Rochdal, West Sussex(Pagham), West Lothian (Livingston), Birmingham, Hertford(Norton, Watford), Reading, Leeds, West Berkshire(Newbury), Portsmouth, Wolverhampton, Croydon, Rotherham, Bristol, Swansea, West Midlands(Sutton Coldfield), Staffordshire(Smethwick), Windsor And Maidenhead(Maidenhead), Monmouthshire(Usk). Witney(OxfordShire), Kingston Upon Hul(Kingston Upon Hull)
  40. Ukraine(12,12), Dnipropetrovs'ka Oblast'(Dnepropetrovsk), Donets'ka Oblast'(Malaya), Kyyivs'ka Oblast (Kiev), Kharkivs'ka Oblast' (Kharkov), Mykolayivs'ka Oblast' (Nikolaev), Odes'ka Oblast(Odessa), Volyns'ka Oblast'(Lutsk), Zaporiz'ka Oblast(Zaporozhye), L'vivs'ka Oblast'(Lviv), Zhitomir(Zhytomyrs'ka Oblast'), Zhytomyrs'ka Oblast'(Zhitomir), Poltavs'ka Oblast'(Poltava)
African & Middle-East
  1. Algeria(5,5), Alger (Algiers ), Boumerdes(Boudouaou), Bouira(Sidi Aïssa), Setif(Sétif), Constantine(Skikda)
  2. Burkina Faso
  3. Cameroon
  4. Cote D'ivoire, Abidjan, Lagunes,
  5. Democratic Republic of Congo(1,1), Kinshasa
  6. Egypt(4,5), Cairo, Al Qahirah(cairo, Helwan), Al Iskandariyah(Alexandria), Al Gharbiyah(Tanta), Al Buhayrah(Ramsis)
  7. Iran, Islamic Republic Of, Khorasan(Mashhad), Esfahan(Tehran), Ardabil
  8. Ghana
  9. Guyana, Demerara-mahaica(Georgetown)
  10. Israel(4,5), Yerushalayim(Jerusalem), Hamerkaz(Rishon Le Zion, Hod Hasharon), Hefa(Haifa), Tel Aviv
  11. Kenya(4,4), Nairobi Area (Nairobi), Nyanza(Kisumu), Western(Kakamega), Coast(Mombasa)
  12. Kuwait
  13. Libya, Libyan Arab Jamahiriya
  14. Madagascar(1,1) Antananarivo,
  15. Morocco(2,2), Gurgaon, Safi(Youssoufia)
  16. Nigeria(1,1), Federal Capital Territory(Abuja)
  17. Oman(1,1), Masqat(Muscat, )
  18. Saudi Arabia(2,2) Ash Sharqiyah (Dhahran), Ar Riyad(Riyadh)
  19. Senegal(1,1) Dakar
  20. South Africa(5,11), Gauteng(Boksburg, Pretoria, Johannesburg, Roodepoort),Western Cape(Cape Town, Durbanville, Stellenbosch, Bellville), North-west(Fochville), Kwazulu-natal(Durban), Kwazulu-natal(Pietermaritzburg)
  21. Tunisia, Safaqis
  22. UAE(2,2), Sharjah, Dubai

North America

Canada (8/13,39)
  1. Alberta (Edmonton, Medicine Hat)
  2. Manitoba(Winnipeg)
  3. New Brunswick (Moncton, Saint John)
  4. Ontario (Thornhill, Little Current, Waterloo,Scarborough, Cobourg,Toronto,Etobicoke, Barrie, Brampton, Taschereau, London, Milton)
  5. Quebec (Beaconsfield, Lévis, Downingtown, Montreal,Verdun,Rimouski, Chicoutimi, Sherbrooke, Laval)
  6. Saskatchewan(Saskatoon, Prince Albert)
  7. British Columbia(Nanaimo, Vancouver, Abbotsford,New Westminster, Sidney, Port Coquitlam,Nelson, Victoria)
  8. Nova Scotia(Sydney, Leme, Halifax)

USA (46/293)
  1. Alabama (Montgomerey, Birmingham, Harvest, Goodyear, Andalusia, Enterprise, Huntsville)
  2. Alaska(Fairbanks, Juneau, Anchorage)
  3. Arizona (Chinle, Scottsdale,Mesa,Tucson)
  4. Arkansas(Little Rock,Texarkana),
  5. California (Citrus Heights, Hayward, La Mirada, San Fransisco, Newark, Alhambra, Monterey Park, Sanger, Anaheim,Aptos, Lake Isabella, Fontana, San Bernardino, Rosemead, Rocklin, Auburn,Brea,Buena Park, Bakersville, El Cajon, Cathedral City, Los Angeles, Sacremento,San Diego, Oakland, Vacaville, Merced, Rowland Heights, Long Beach, Foresthill, Irvine, Walnut Creek, Fresno, Rancho Cucamonga, Calabasas, Castro Valley, San Clemente, Mountain View, San Jose,South Pasadena, Winnetka, Orange, Riverside, Mexicali Baja, Fullerton)
  6. Colorado (Colorado Springs, Denver, Englewood)
  7. Connecticut(Greenwich, Groton, Hamden, New Canaan, Meridien, Stamford)
  8. Delaware(Dover)
  9. District Of Columbia(Washington)
  10. Hawaii(Kailua Kona, Kapolei,)
  11. Idaho (Meridian,Lewiston, Boise)
  12. Indiana (Fort Wayne, Muncie, Angola)
  13. Illinois (Schaumburg, Hoffman Estates, Buffalo Grove, Roselle, Chicago, Alsip, Barrington, Peoria, Orland Park, Palos Hills, Des Plaines, Lincolnshire, Wheaton, Worth)
  14. Iowa, (Hamburg, Iowa City, Troy, Fairfield, Sidney)
  15. Florida (Hialeah,Hollywood, Winter Park, Deland, Saint Augustine, Jupiter, Kissimmee, Fort Meyers, Saint Cloud,West Palm Beach, Miami, Miami Beach, Tallahassee, Orange Park, Jacksonville, Pompano Beach, Rockledge, Orlando, Fort Lauderdale, Tampa, Clearwater, Sarasota, Boca Raton)
  16. Georgia (Conyers, Alpharetta, Macon, Savannah, Tampa, Marietta, Atlanta, Roswell, Kennesaw, Norcross)
  17. Kansas (Concordia, Wichita)
  18. Kentucky (Harrodsburg)
  19. Louisiana (Monroe,Shreveport)
  20. Maine (Westbrook)
  21. Maryland(Frederick, La Plata, Baltimore, Columbia, Lanham, Sykesville, Silver Spring)
  22. Massachusetts(Cambridge, Framingham, Tewksbury, Bedford, Mattapan, Acton, Billerica, Uxbridge, Marlborough)
  23. Michigan (Bridgman, Cold Water, East Lansing, Owosso, Traverse City, Grand Rapids)
  24. Minnesota (Minneapolis, Rochester)
  25. Missouri (Saint Louis, Sikeston, Florissant, Kansas City, Nixa)
  26. Nevada(Las Vegas)
  27. New Hampshire(Derry)
  28. New Jersey(Andover, Paramus, Tranquility, Mahwah, Midland Parks, Teaneck, Somerset, Paterson, Vineland, Riverton, Flemington,Westwood,Willingboro)
  29. New York (Buffalo, Brooklyn, Staten Island, Astoria, Babylon, Brookyln, Clifton Park, Fayetteville, Waterloo, West Islip, Rego Park, Flushing, Lindenhurst, Rensselaer, Oceanside, Rochester)
  30. North Carolina(Burlington, Cornelieus, Durham, Mooresville, Asheville,Fletcher,North Hollywood,Monroe, Cuernavaca, )
  31. North Dakota(Fargo)
  32. Ohio (Akron, Bucyrus, Bloomingdale, Cambridge, Bowling Green, Milford, Powell, Hudson, Cincinnati, Logan, Loveland, Twinsburg, Marysville, Yellow Springs)
  33. Oklahoma (Oklahoma City, Stillwater)
  34. Oregon (Portland, Beaverton)
  35. Pennsylvania (Philadelphia, Harrisburg, Chester Springs, Orefield, Malvern, Downingtown, Landsdale, West Chester, Doylestown, Pottstown, Scranton)
  36. Puerto Rico(Anasco)
  37. South Carolina (Florence, Columbia, Hilton Head Island,)
  38. South Dakota(Aberdeen, Sioux Falls)
  39. Tennessee (Brownsville, Nashville, Memphis, Bell Buckle, Chattanooga,)
  40. Texas (Irving, Killeen, Texarkana, Kemah, League City,Dallas, San Antonio, Houston, Corpus Christi, El Paso, Fort Worth, Abilene, Harker Heights, Lake Jackson)
  41. Virginia, (Arlington, Ashburn,Floyd, Richmond, Rocky Mount, Lebanon, Chesapeake, Fairfax Station)
  42. Vermont(Enosburg Falls, Chester)
  43. West Virginia
  44. Washington (Bellingham,Seattle, Tacoma, Olympia, Redmond,Everett)
  45. Wisconsin (Neenah, Tomah, Pound, Green Bay, Appleton, Madison, Bellingham, Hatley, Hartford,Wausau, Plover, Bellevue, Janesville)
  46. Utah (Ogden, Salt Lake City, Hooper,Washington, Sandy)
Mexico(26, 48)
  1. Baja California(ijuana)
  2. Chiapas(Tapachula, Zinacantán, Tuxtla Gutiérrez, La Trinitaria)
  3. Chihuahua
  4. Colima
  5. Coahuila De Zaragoza(Saltillo, Torreón)
  6. Distrito Federal(Mexico)
  7. Guerrero(Chilpancingo)
  8. Guanajuato(León)
  9. Hidalgo(Tulancingo)
  10. Jalisco (Zapopan, Tlajomulco, Guadalajara)
  11. Juarez
  12. Mexico(Tultitlán, Cuautitlán Izcalli, Nezahualcóyotl, Naucalpan, Guanajuato, Metepec)
  13. Morelos(Cuernavaca, Cuernavaca)
  14. Naucalpan
  15. Oaxaca(Tuxtepec)
  16. Quintana Roo(Chetumal)
  17. Queretaro De Arteaga(Querétaro)
  18. Nuevo Leon(Monterrey, San Nicolás De Los Garza, Garza García)
  19. Puebla(Tehuacán)
  20. Sonora (Obregon)
  21. Sinaloa (Los Mochis, Mazatlán, Sinaloa)
  22. Tabasco(Villahermosa)
  23. Tamaulipas(Tampico, Nuevo Laredo, Reynosa, Altamira€)
  24. Veracruz-llave(álamo, Tierra Blanca,Veracruz, Poza Rica, Xalapa)
  25. Yucatan(Mérida)
  26. Zacatecas(Madero)

Central America


  1. Costa Rica, San Jose(San José), Limon(Limón), Alajuela(San Ramón)
  2. Guatemala, Guatemala(Guatemala City)
  3. Honduras, Francisco Morazan (Tegucigalpa)
  4. Nicaragua(Managua), Masaya(Masatepe)
  5. Panama , Chiriqui(Pueblo Nuevo, David ), Panama(La Chorrera)
  6. Trinidad & Tobago, St George
Caribean

  1. Dominician Republic, (Santiago, Santo Domingo),Espaillat(Moca, ), San Cristobal(Fundación)

South America
  1. Argentina(13,54), San Luis(Mercedes), Tucuman(Tucumán), Corrientes, Entre Rios(Viale, Federal), Bueno Aires(Florencio Varela, La Pata, Martinez, Olivis, San Antonio De padua, San Martín, Olivos, Luján, Hurlingham, Temperley, Junín, Banfield,Avellaneda, Ituzaingó, San Isidro, Bahia Blanca, Bernal, Brandsen, Boulogne, Berazategui, , Matheu, Lanús, La Plata, Monte Grande, Quilmes, Ranelagh,Villa Ballester, Gonnet, Mar Del Plata,Verónica, Santos Lugares, San Nicolás), Cordoba(Córdoba, Laboulaye, Serrano, Villa Carlos Paz,),Distrito Federal(Villa Devoto,Buenos Aires) Mendoza(Junín), Santa Fe(Rosario,Villa Constitución), Chaco(Resistencia), Neuquen(Neuquén, San Martín De Los Andes), Mendoza (Rivadavia), Entre Rios(Concordia), Mendoza, Chubut(Trelew), Misiones(Posadas, Puerto Rico, Eldorado)
  2. Bolivia(3,3), El Beni(Santa Cruz), Cochabamba, La Paz
  3. Brazil (22,108), Tocantins(Palmas), Rio Grande Do Norte(Natal), Amazonas(Manaus), Espirito Santo(Vila Velha) , Golas(Inhumas), Sergipe(Aracaju), Bahia (Salvador) , Rondonia(Cacoal, Ji-paraná,Pôrto Velho),Parana(Campo Mourão, Curitiba, Loanda, Londrina, Paranavaí, Foz Do Iguaçu, Maringá), Pernambuco(Recife, Olinda, São João), Minas Gerais(Ipatinga, São João Del Rei, Contagem, Almenara, Carmo Do Rio Claro, Belo Horizonte, Uberlândia, Ubaporanga,Betim, Mijas), Goias(Goiânia,Senador Canedo, Anápolis), Paraiba(Patos, Bayeux, João Pessoa), Distrito Federal(Brasília), Rio De Janeiro(Petrópolis,Rio De Janeiro,), Ceara(Fortaleza), Para(Belém, Santarém,), Mato Grosso Do Sul(Dourados, Campo Grande), Rio Grande Do Sul(Caxias Do Sul, Santa Cruz Do Sul, Novo Hamburgo, Cachoeirinha, Gravataí, Sapiranga, Estrêla, Porto Alegre, Igrejinha, Cruzeiro Do Sul, Venâncio Aires), Piaui(Teresina), Maranhao(São Luís, Coroatá,), Sao Paolo(Ribeirão Prêto, Indaiatuba, Taubaté, Santos, Pontal, Louveira, Santo André, São José Do Rio Prêto, Getulina, São paolo, Manuel,Moji Das Cruzes, Tatuí, Osasco, Sao Carlos, Araçatuba, Nova Odessa, Lins,Laranjal Paulista, Presidente Prudente, Sorocaba, Juquitiba, Araraquara, Araras, Mogi-guaçu, Campinas, Leme, Arujá, São Sebastião,Birigui, São José Dos Campos, Piraju,Caraguatatuba, Piracicaba, Avaré,Bebedouro, Garça, Itapira, São Paulo, Rio Claro, Pao, Limeira, Guarulhos, Hortolândia,Bauru, Embu, Jundiaí , Jaboticabal,Mirassol, Barueri,), Santa Catarina(Blumenau, Schroeder, Gravatal, Criciúma, Tubarão), Maranhao(São Luís)
  4. Chile(13,17), Region Metropolitana (Santiago), Magallanes Y De La Antartica Chilena(Punta Arenas), Coquimbo, Bio-bio(Chillán, Concepción, Los ángeles), Araucania(Temuco), Valparaiso(Viña Del Mar, Valparaíso), Rio Grande Do Sul(Porto Alegre), Los Lagos,(aldivia), Los Lagos(Valdivia, Osorno), Antofagasta(Calama) , Libertador General Bernardo O'higgins(Rancagua), Maule(Parral)
  5. Colombia(9,9), Atlantico (Barranquilla), Santander(Bucaramanga), Department(Tunja, Boyacá), Cundinamarca(Bogotá, Zipaquirá), Norte De Santander(Cúcuta), Bolívar , Santande(Bucaramanga), Bolivar Department(Cartagena), Huilia(Beiva),Tolima(lbague)
  6. Ecuador(1,1) , Pichinca (Quito)
  7. Paraguay(2,2) , Central( Asunción), Itapua(Encarnación)
  8. Peru(5,5), Piura(Sullana), Lima, La Libertad(Trujillo), Arequipa, Tacna
  9. Uruguay(4,4), Montevideo, Maldonado, San Jose(San José), Tacuarembo(Tacuarembó)
  10. Venezuela(13,18), Sucre(Cumaná), Guarico(Valle De La Pascua), Nueva Esparta(Manzanillo, Porlamar), Distrito Federal (Caracas), Monagas(Bolivar, Maturín), Aragua(Maracay), Anzoategui(Barcelona), Barinas, Lara(Barquisimeto, Cabudare), Zulia(Maracaibo, Cabimas, ), Miranda(Petare, Charallave), Tachira(San Cristóbal), Cabimas, Zulia, Merida(Mérida)

Asia-Pacific
  1. Australia(6/8, 26), Queensland(Brookfield, Mooloolah, Brisbane,Gold Coast), New South Wales (Toronto, Uki, Manly, Mascot, Sydney, Murwillumbah. Narellan, Parkes,Liverpool,Pyrmont), Victoria (Box Hill, Glen, Geelong, Berwick, Waverley, Melbourne, Horsham, Hampton Park), Western Australia(Kalgoorlie, Perth), South Australia(Adelaide, Port Augusta), Australian Capital Territory(Canberra)
  2. Brunei Darussalam(1,1)(Bandar Seri Begawan)
  3. China(9,10) , Guangdong(Guangzhou, Dongguan), Guangxi (Nanning), Guangdong(Shenzhen), Shanghai, Shanxi (Henan), Jilin(Changchun), Shaanxi(Xian), Beijing, Shandong(Qingdao), Fujian(Shangxi)
  4. French Polynesia(1,1)
  5. Guam(3,3) Barrigada, Hagatna, Yigo
  6. Hong Kong(5,5), Quarry Bay,Central District,Causeway Bay,Chai Wan, North Point
  7. India (17/35,46), Punjab(Amritsar, Phagwara), Goa(Cortalim), Jharkhand(Ranchi), Maharasta(Nasik, Bombay,Pune, Aurangabad) , Kerala (Kollam, Kochi, Thiruvananthapuram, Pathanamthitta), Gujarat(Palanpur, Bhavnagar, Anand, Rajkot, Surat, Ahmadabad, Nadiad, Vadodara), Karnataka(Bangalore, Mangaluru), Tamil Nadu(Madurai, Sennori, Tiruppur, Madras, Erode, Singanallur, Coimbatore, Tiruchchirappalli, Erode), West Bengal(Calcutta), Delhi (New Delhi), Andhra Pradesh(Hyderabad), Uttar Pradesh(Muzaffarnagar, Meerut, Lakhnau, Ghaziabad, Gorakhpu), Madhya Pradesh(Ujjain, Indore, Bhopal), Bihar(Patna), Haryana(Faridabad, Sonipat, Gurgaon), Kerala(Kochi), Rajasthan(Jaipur), Chandigarh
  8. Indonesia(8,14), Yogyakarta,Jakarta Raya (Jakarta), Jawa Barat(Bandung,Tangerang, Bekasi, Cimahi, Sukabumi, Bogor), Jawa Tengah(Semarang), Jawa Timur(Tulungagung, Surabaya), Jawa Tengah(Mega), Sumatera Utara(Medan), Sumatera Selatan(Palembang)
  9. Japan(3,3), Tokyo, Kanagawa(Yokohama), Aichi(Ichinomiya), Gumma(Tomioka)
  10. Korea(4,4), Seoul-t'ukpyolsi(Seoul), Kwangju-jikhalsi(Gwangju), Kyonggi-do(Ansan), Inch'on-jikhalsi(Incheon)
  11. Macau, Ilhas(Macau)
  12. Malaysia (8/13,14) , Penang(Butterworth, Penang), Kelantan(Pasir Mas), Selangor(Shah Alam, Petaling Jaya, Kuala Selangor), Johor(Johor Baru, Kluang), Sabah(Kota Kinabalu), Sarawak (Kuching), Melaka, Perak(Ipoh, Parit Buntar), Kuala Lumpur, Pahang(Kuantan)
  13. Mauritius
  14. Mongolia(1,1) (Ulaanbaata)
  15. Nepal, Kathmandu
  16. New Zealand(3,3), Wellington(Porirua), Auckland(Dargaville), Nelson
  17. Pakistan(4,5), Punjab(Sahiwal, Lahore), Kashmir, Islamabad, Sindh(Karachi)
  18. Philippines(15,21), Nueva Ecija(Quezon),Cebu(Cebu City), Bulacan(Malolos), Manila, Rizal(Pasig, Mandaluyong, Makati, Sampaloc, MalandayParañaque), Mandaue, Davao(Tagum, Davo City), Quezon City(Caloocan), Tagbilaran, Lipa, Surigao Del Sur(Bislig), Cavite City(Cavite), Pamoanga(San Fernando), Bukidnon(Malaybalay), Nueva Ecija(Quezon), Laguna(College), Philippine(Banguet)
  19. Singapore(1) Singapore
  20. South Korea(1), Seoul-t'ukpyolsi (Seoul)
  21. Sri Lanka(1,1) Western(Colombo), Uva(Badulla)
  22. Taiwan(2,5), T'ai-pei(Taipei), T'ai-wan(Kangshan,Kaohsiung, Taoyüan, Hsinchu)
  23. Thailand(3,3), Khan Kaen, Krung Thep (Bangkok), Chai Nat(Sankhaburi)
  24. Vanuatu (Vila, Efate)
  25. Fpo, Armed Forces Pacific
  26. Vietnam , Song Be(Plây Cu), Quang Tri,

Friday, February 27, 2009

What's fixed in CA-Clipper 5.2a


The following information on the CA-Clipper 5.2a patch was extrated from 52doc.txt which came with the patch.

PROBLEMS ADDRESSED BY CA-Clipper 5.2a

o C3049 - String Space exhausted. - Change to CLIPPER.EXE The compiler has been changed to increase the available string space. Developers whose applications compiled with this error in previous versions of Clipper should no longer receive this error message.

o Debugger Break Point Handling. - Change to CLD.EXE & CLD.LIB The debugger has been changed to improve Break Point handling. Developers who noticed difficulty in setting break points or noticed that break points were lost upon application restart will no longer have problems.

o Memoedit() double spacing problem. - Change to EXTEND.LIB The Memoedit() function has been changed to alleviate a double spacing effect which sometimes occurred. The only developers who noticed this problem had memo field data which had a trailing space at the wrap point. While this problem was uncommon it could be very disconcerting in applications where the format of memo field data is important.

o Inkey() setting Lastkey() to 0. - Change to CLIPPER.LIB The Inkey() function has been changed. The Inkey() function in CA-Clipper 5.2a will only set the Lastkey() value when a key is drawn from the keyboard buffer. The Inkey() function in version 5.20 set the Lastkey() value to 0 when there was no key in the keyboard buffer to retrieve and the time value expired. The 5.20 behavior had an adverse effect on several systems which use Inkey(); for example Memoedit() with a custom UDF() where the UDF() had been coded to expect the last navigational key pressed to be available via Lastkey() would receive a value of 0.

o OrdSetFocus() tag in lowercase. - Change to DBFNTX.LIB The OrdSetFocus() function will now accept parameters in any case. Developers who changed their applications to use order names rather than order numbers noticed that unless the name was in upper case the order established would be natural (no) order. This problem was unique to the DBFNTX driver.

o NATION support. - Change to NAT_OBJ.EXE The change here is only in the internal structure of the nation drivers. The drivers will now make a function call into CLIPPER.LIB to retreive clipper version information. In the future should a specific driver require updating this change simplifies that process.

SUPPORT NOTES CA-Clipper 5.01 vs 5.2x

o _GET_() - Changed in 5.2 and may effect 3rd Party products. If you have noticed that sometimes GETs don't appear then your application is probably making a call to _GET_(). The call to this internal function may be invoked from a 3rd party product.

The CA-Clipper internal function _GET_() has changed from version 5.01 to 5.2x. In 5.2x _GET_() no longer displays the GET. The GET is now only displayed after a call to the get_object:Display() method. Developers or 3rd parties who depended on the old behavior will either have to re-write the offending code, recompile, or ask the 3rd party vendor to supply a 5.2x compatible version of the library.

o Avoid calls to Internal Functions. As a reminder. Developers should not rely on the behavior of internal functions, (those that start with one or more "_"). Calling internal functions is strongly discouraged by Computer Associates as there is no guarantee the behavior of these internals will remain consistant between versions.

What's fixed in CA-Clipper 5.2b


The following information on the CA-Clipper 5.2b patch was extrated from 52abi.txt which came with the patch. This is an important patch as it fixes 28 known bugs !!!

The problems resolved by CA-Clipper 5.2b include:

1. Fixed a Virtual Memory Integrity Failure in FOPEN() when the file name is numeric instead of a character string.

2. Fixed a Virtual Memory Integrity Failure when calling AADD() to increase the size of an array.

3. Fixed a Virtual Memory Integerity Failure that occured when an ACHOICE() user function deleted elements from the menu selection array. ACHOICE() now allows the user function to add, delete, or modify existing elements without causing any problems in ACHOICE().

4. Fixed a Virtual Memory Integrity Failure in the Internal Runtime Event System. This was causing the DBFCDX driver to hang as well as various "unexplainable" errors.

5. Fixed a Virtual Memory Integrity Failure in the debugger when viewing multiple nested arrays. Tbrowse was producing a parameter error when viewing multiple nested arrays. In some instances this produced a Virtual Memory Integrity Failure.

6. Fixed a Virtual Memory Integrity Failure in the debugger's memory allocator. (STAR Issue# 737689)

7. Fixed INDEXKEY() memory corruption problem. INDEXKEY() would occasionally return a garbage string when called repeatedly. This sometimes caused a Virtual Memory Integrity Failure.

8. Fixed MEMOEDIT() buffer memory corruption problem. This occurred when MEMOEDIT() was called with a user defined function. This would result in various memory related errors including a Virtual Memory Integrity Failure.

9. Fixed slow disk I/O on replaces on large DBF's with non-unique indexes. The performance has been improved to a speed which is comparable to CA-Clipper 5.01a.

10. Fixed the releasing of all relations (in all workareas) when any child dbf was closed. Now closing a child database releases only the relations that it is involved with.

11. Fixed the DBFNDX Replaceable Database Driver so that it now properly seeks on a date value with SET DELETED ON.

12. Fixed DBCREATE() to properly return a NIL value as documented.

13. Fixed INDEXORD() so that it now returns a zero when no database is open rather than generating a runtime error.

14. Fixed some occurances of internal error 1210 (database and index are out of sync).

15. Fixed many occurances of internal error 415 (can not open external overlay file).

16. Fixed the Runtime Memory Manager so that it now returns an EG_MEM (5300 "Memory Low Warning") before generating a memory exhausted error.

17. Fixed Runtime failures that occured when CA-Clipper mistakenly tried to use non-existent EMS memory.

18. Fixed FREAD() so that it does not modify variables that it shouldn't have access to.

19. Fixed BROWSE() so that it no longer causes the repositioning of a file to BOF() when editing takes place in a new record.

20. Fixed the debugger so that it is no longer necessary to specify the default file extension (.PRG or .PPO) when opening a file.

21. Fixed the debugger so that it correctly searches the path (indicated by the PATH environment variable) when searching for a file to open.

22. Fixed the debugger so that it does not produce "Argument error +" when the F6 key is pressed to view databases.

23. Fixed DBU so it now correctly parses a file name that contained a drive letter and colon (:) but no backslash (\) (such as C:TEMP).

24. Fixed numerous bugs in the R.L. utility.

25. Fixed the compiler screen to include the missing /t and /z options in order to match the documented options.

26. Fixed the spelling of OrdDestory to OrdDestroy in STD.CH for the DELETE TAG command.

27. Fixed the "Guide to CA-Clipper" .NG file so that the Norton Guide engine may now be unloaded from memory.

28. Enhanced the //INFO command line parameter to show what message and collation driver is linked in.

Technical Note: The Virtual Memory Integrity Failure Error Message

The Virtual Memory Integrity Failure error message (or VMIF for short) refers to a problem that is neither well documented nor well understood. In this technical note, we will explore what the VMIF message indicates, some of the common reasons it occurs, and what measures to take if you encounter one.

CA-Clipper uses a virtual memory manager to allow applications to access more strings, arrays, and objects than conventional memory would otherwise allow. It accomplishes this by swapping information to and from expanded memory or disk as needed. Each virtual data item (called a segment) has an entry in a descriptor table that maintains its current location and length. A segment's length can be up to 65,518 bytes, while its location may be conventional memory (resident), disk or EMS (non-resident). When CA-Clipper receives a request for non-resident data, it always checks the segment's descriptor entry to ensure that it's length is non-zero. Any descriptor whose length is zero is, by definition, invalid because VM does not allow zero-byte segments. Thus, a zero length segment is interpreted as a corruption, and the VMIF error message is displayed.

Along with the VMIF message is a hexadecimal address that indicates the address of the corrupted descriptor table element. This information may be useful to the CA-Clipper Technical Support as well as the development staff. C and Assembler programmers may also find this information useful in determining if and how their code caused the corruption. A special case is the address 0000:0000. It indicates that a NULL and (possibly uninitialized) pointer was used to access virtual data.

While it is true that the VMIF message occurs for exactly one condition, that condition can be created in many different ways. Research indicates that the conditions that lead to a VMIF can be broken down into three distinct categories.

First, several VMIFs can be attributed to Clipper programming bugs. While a VMIF should never occur solely on the basis of executing Clipper code, a combination of inadequate error detection on the part of Clipper runtime and a violation of proper programming practices may cause the error to occur. Examples of this have been: calling FOPEN() with numeric data for the file name, deleting array elements from within an ACHOICE() UDF, and assigning NIL to any TBROWSE instance variable that requires a character value. (Please note that the TBROWSE VMIFs were fixed in the 5.01a release and the ACHOICE() and FOPEN() VMIFs are fixed in the 5.2b release by producing an error when improper values are used.)

The second category is within the CA-Clipper runtime support libraries. CA-Clipper's runtime support libraries constantly issue calls to the VM system throughout the normal execution of a Clipper application. On occasion, specific conditions pertaining to runtime activities are not properly handled internally, creating conditions that eventually result in a VMIF. These instances are always considered problems by the development staff.

The last category is external code typically written in C or Assembler by CA-Clipper programmers and third party library developers. These are usually caused by improper use of one of CA-Clipper's APIs or by changing the functionality of something within CA-Clipper's runtime that is assumed to remain constant.

Although CA-Clipper's VM system provides detection and reporting, it is almost never the cause of a VMIF.

VMIFs are commonly detected long after the actual corruption occurred. A module may store a zero-length segment in the segment descriptor table either through use of VM or by writing to a wild pointer. This corruption will not be detected until a VM segment is accessed that requires the corrupted segment to be discarded, or swapped to disk or EMS. The Clipper VM subsystem is demand-based. This means that it only performs swapping when swapping is absolutely required. If a VMIF consistently occurs at a specific point in the execution of an application, it is often not actually caused at this point. It tells us that a corruption has occurred, but has no means for determining the cause of the corruption or when the corruption actually occurred.

Because VMIFs are detected when the VM system attempts to swap in memory, a change in the amount of conventional memory available when an application is executed changes the possibility of the VMIF occurring. When sufficient real memory is available, VM has no need to perform any swapping and any possible VMIFs will not be detected. When less real memory is available to an application, the entire profile of swapping is changed, and may prevent the VMIF from occurring in a constant location.

This raises the question of how to ensure that the VM system is being called during the testing phase of application development. A simple and effective method is to use CA-Clipper's //X: parameter to decrease the available memory as much as is feasible. This will ensure that the VM system will be called with the most frequency. (The //X: parameter is detailed in the Runtime Environment chapter of the CA-Clipper 5.2 Programming and Utilities Guide.)

If a VMIF occurs, try to determine how to reproduce the problem at will and if possible, isolate it to a small example and immediately contact your CA-Clipper Technical Support Representative. The CA-Clipper Quality Assurance team is also constantly searching for occurrences of VMIFs. Either way, the CA-Clipper Development team is anxious to correct all internal VMIFs as quickly as possible.

Welcome to Clipper... Clipper... Clipper


In 1997, then using Delphi 3, I had already created 32-bits Windows applications for HRIS, ERP and CRM. In 2007, using Ruby on Rails, an AJAX powered CRM site running on Apache & MySQL was created and I am now using Visual Studio .Net 2008 to create web-based projects and Delphi 7 for Win32 applications using SQL2005 & DBFCDX.

So, why then am I reviving the Original Clipper... Clipper... Clipper via a Blog as CA-Clipper is a programming language for the DOS world ? Believe it or not, there are still some clients using my mission-critical CA-Clipper applications for DOS installed in the late 80's and up to the mid 90's. This is testimony to CA-Clipper's robustness as a language :-)

With the widespread introduction of Windows 7 64-bits as the standard O/S for new Windows based PCs & Notebooks, CA-Clipper EXE simply will not work and it has become imperative for Clipper programmers to migrate immediately to Harbour to build 32/64 bits EXEs

Since 28th January 2009, this blog has been read by 134,389 (10/3/11 - 39,277) unique visitors (of which 45,151 (10/3/11 - 13,929) are returning visitors) from 103 countries and 1,574 cities & towns in Europe (37; 764 cities), North America (3; 373 cities) , Central America & Caribeans (6; 13 cities), South America(10; 226 cities), Africa & Middle-East (12; 44 cities) , Asia-Pacific (21; 175 cities). So, obviously Clipper is Alive & Well : -)


TIA & Enjoy ! (10th October 2012, 11:05; 13th November 2015)


Original Welcome Page for Clipper... Clipper... Clipper

This is the original Welcome Page for Clipper... Clipper... Clipper, which I am republishing for historical and sentimental reasons. The only changes that I have made was to fix all the broken links. BTW, the counter from counter.digits.com is still working :-)

Welcome to Chee Chong Hwa's Malaysian WWW web site which is dedicated to Clipperheads throughout the world.

This site started out as a teeny-weeny section of Who the heck is Chee Chong Hwa ? and has graduated into a full blown web site of more than 140 pages (actually hundreds of A4 size pages) ! This is due to its growing popularity and tremendous encouragements from visiting Clipperheads from 100 countries worldwide, from North America, Central America, Caribbean, South America, Europe, Middle-East, Africa and Asia-Pacific. Thanx Clipperheads, you all made this happen !


What is Clipper ?

You may ask, what is this Clipper stuff ? Could Clipper be something to do with sailing as it is the name of a very fast sailing American ship in the 19th century ?

Well, Clipper or to be precise, CA-Clipper is the premier PC-Software development tool for DOS. It was first developed by Nantucket Corporation initially as a compiler for dBase3+ programs. Since then, CA-Clipper has evolved away from its x-base roots with the introduction of lexical scoping & pre-defined objects like TBrowse. As at today, the most stable version ofClipper is 5.2e while the latest version, 5.3a was introduced on 21 May 1996.

As at 11th November, 1996, an unofficial 5.3a fixes file was made available by Jo French. See the About CA-Clipper 5.3a section for more details. BTW, Jo French uploaded the revised 5.3a fixes file on 20th November, 1996.

Latest News

The latest news is that CA has finally released the long-awaited 5.3b patch on 21 May, 1997.

For 5.3b users, you must a take a look at Jo French's comments on unfixed bugs in 5.3b.

BTW, have you used Click ? If you're a serious Clipperprogrammer and need an excellent code formatter, Click is a natural choice. How to get it ? Simple, access Phil Barnett's site via my Cool Clipper Sites.

32-bits Clipper for Windows ?

Have you tried Xbase ++ ? Well, I have and compared to Delphi (my current Windows programming tool of choice), I'm still sticking to Delphi.

Anyway, you should visit the Alaska Home Page. Give it a chance and then draw your own conclusions !.

The Harbour Project

Is this the future of Xbase ? Take a look at at the Harbour Project

You are Visitor # ...

According to counter.digits.com, you are visitor since 3 June 1996.

If you like or dislike what you see on this website, please drop me a line by clicking the email button at the bottom of this page or better still, by filling out the form in my guest book. If you are not sure what to write,click here to take a look at what other Clipperheads have to say.