What directions do you see programming tech taking?

It says its got unicode here?

News from CIDC 2017 - Clarion (clarionsharp.com)
kn-c11.png (870×457) (clarionsharp.com)

LOL! :slight_smile:

Still find plenty of uses for clarion and for knocking up hand code projects Csharp and CPP cant complete.

MS is still finding it cant not back port its GUI to platforms outside dot NOT!

Yes something needs to done but what.

Very easy to connect clarion to CPP and that makes it very easy to add services even if there is not other version but 64 BIT will be needed one day.

The code base for the system must be huge after 20 years of Development.

Take a lot of money to move this product on.

Unless the code has been refactored? That can take a long time, even reorganising code with a new naming schema can take a bit of time unless a tool which refactors code is used, but that would only work when the code is in txt files of sorts, wouldn’t work on a proprietary APP file, unless it can edit TXA’s?

I’ve used some Unicode api’s but as it was a C6 app, I converted the Unicode back to ANSI to store it in the C6 app, but that was a long time ago. Haven’t tried storing any Unicode yet despite having an app which would best be written in Unicode.

My biggest question with Unicode is the sorting, how is it going to sort the data, we might get some driver switches/flags to choose how the sorting is done in the keys, I don’t know I haven’t seen too much on this coming from SV.

This link kind of explains some of the problems with sorting and will TPS handle this?
UTS #10: Unicode Collation Algorithm
Swedish alphabet - Wikipedia
Swedish “Ä” is a letter in the Swedish alphabet
German “Ä” is part of the language but not part of the alphabet and it is simply expanded to “AE”.
And in German there’s like 16 different dialects, officially High German is the official German written and spoken, but people in the south of the country speak Low German and it can be hard for High German Speakers to understand Low German speakers, before you even get into Austrian German, Swiss German, Texas German, Namibian German and the multitude of regional dialects within Germany itself. And thats just one European country!!!

Japan
Gojūon - Wikipedia

Korean
Hangul - Wikipedia
The Unicode Standard, Version 14.0

Collation and Unicode support - SQL Server | Microsoft Docs

I think we as programmers will need to decide what the intended data input is going to be for our apps & customers and then select the collation order that best matches the intended data, whilst making the customer aware of the problems with Unicode collation orders.

But I haven’t seen much discussed on this part of Unicode because its such a broad subject and there is a mention of Unicode in the MS SQL file driver and another page in the help doc, but that’s all I can find.

UNICODE
DRIVER('SQLDriver', '/UNICODE= TRUE | FALSE' )
[ Join" = ] SEND(file, '/UNICODE[ = TRUE | FALSE ]' )

There is no hint of what collation order we could apply as a driver switch/flag other than the one above.
Ok with MS SQL we can set that in the back end, but what about something like TPS?

Edit:
This is some of the problems which might be seen and is a fairly old problem so others must have decided on the best solution in the last 10-15years to handle this sorting problem.

Thread: Problem in unicode sorting : Postgres Professional

It doesnt just affect sort orders, it can affect Web Browsers as well.
Unicode sorting is hard & why browsers added special emoji matching to regexp (hexops.com)
GitHub - twitter/twitter-cldr-rb: Ruby implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more.

So its a complex subject when you start diving into all this Unicode stuff.

I think Clarion has to deal with databases in a more “mature” way. I totally understand the path that Clarion took moving from ISAM files to SQL, with the driver allowing you to treat operations in SQL database the same as if you were writing to flat files. It was important for people to be able to move from one system to another without adjusting their thinking too much, but…

the current way of dealing with databases is through declaring tables in your Clarion dictionary, and you have to make sure those declarations match the way the tables in the database are set up. There are two major problems with that: the first is just the synching problem: the only real value-added in the Clarion dictionary is in mapping data columns to window controls (checkboxes, dropdowns etc.). Everything else (data validation, data types) is better handled by the database IMO.

Secondly, the larger and more important databases get, the more likely it is that straight access to the data (INSERT into mytable, DELETE from mytable etc.) will not be an acceptable way to deal with the database. A lot of database applications are designed with an API in the database so that you don’t insert a client by sending and INSERT INTO client statement, you call an Insert_client procedure with a bunch of parameters, like name, address, billing method etc. and the database procedure handles putting that information into one or more tables. Similarly, the data that you display in your program is likely to come from views (possibly parameterized by calling a procedure), rather than from a bunch of tables that you join into a view in a definition in your front end.

Calling database procedures from Clarion is really quite primitive. When you are doing NORESULTCALL calls with bound local variables, so far as I can tell, those local variables have to be declared as STRINGs or CSTRINGs; you can’t send numbers and dates directly. And you ought to be able to import function and procedure definitions in the dictionary, so when call them you are prompted with the parameter types for the arguments.

Similarly, I think Clarion needs to deal with sets of data better. Yes, the driver uses a buffer argument to determine how many rows to grab at a time, but you cannot deal with that data set directly. You can import it a row at a time into a queue, but that shouldn’t really be a step that is required.

Very well stated.
Unfortunately, there’s a snowball’s chance in hell that SV can manage such changes in our lifetime.

1 Like

There isnt anything stopping us writing our own class wrappers, I dont know what the format is to write our own drivers, but I dont think it would be too hard to work that out, it just takes time.

Isnt this what ADO is supposed to be?
ADO Fundamentals - ActiveX Data Objects (ADO) | Microsoft Docs

The other thing of course, you get a separation of the data, ie a data store which handles all the I/O to the database and then you choose your front end beit a clarion exe or a website displaying data or an app on a phone talking to the db where ever its located in the world.

Hence why I still use C6, I’ve not seen anything yet that makes it worthwhile to upgrade and at this point it’s a known quantity (as opposed to < characters in C11 where the behaviour is apparently changing on a regular basis)

I use both. The mistake I made is being vocal on the ngs about having a visual studio like IDE.

I can see now, that Clarion needs its own IDE because its much bigger than anything MS needs, and here is why, SV have had to bolt in extra functionality to the property pad to cater for the Clarion bits which are select template, Actions, Embeds, Key, Alert & Edit Text which can be seen at the bottom of the property pad.

Ideally, the popup windows seen in the C6 window designer would be an option instead of using the pad’s because when those C6 windows appear, they have nice big tabs for easy navigation and they are so fast to use with a mouse. I cant get up to speed with the property pads unlike the C6 windows.

Now for someone coming from a VS type of IDE, that will be familiar to them as its all they know, but I think SV could build the C6 windows back into the dct and window designers because they have the C6 popup windows when adding a new table in the dct, so some has been retrofitted, its just a question of how much time and money it would take to build these in, if thats the direction SV want to go.

What I also like about the C6 ide is its not overload with menu options I cant use, sure the C7+ full screen option gives me similar but I still miss the C6 popup windows.

I also cant get a style/theme I like, so I need to build my own because I’m picky. :grinning:

The last four words says it all - the reason why tools are purchased.

It just takes some time and practice. As with everything new it can take a bit of time to get familiar with it. On the whole though I find the new IDE much faster and easier to work in than C6. But it is different, and getting it set up the way you like it, behaving the way you want it to takes time.

With every major clarion update we do a webinar walk-through of all the IDE settings (typically it takes 2 or 3 webinars to go through everything) and it’s interesting to see how much we differ, just amongst ourselves as to what settings we prefer. That’s the joy of settings I guess, we can all have what we prefer. I’ve also had cases where I’ve tried someone else’s preferred setting for a bit - some stick, some don’t, depending on what works for me.

On the other hand you couldn’t pay me to work in Clarion 6. That really is terrible compared to what we have now.

Cheers
Bruce

What I find I miss in C6 is the code folding.

I have done a search (PROP(PROP:DropWidth,140)) and replace (PROP(PROP:DropWidth,240)) in the templates which has improved some bits of C6

The IDE search facility works faster in C6, I seem to keep hanging the C7+ ide when I try to use that.

For C11 IDE, I’ve so far 65pages of how to customise it and it isnt finished, but we have mouse zooming in the text editor and no (mouse) zooming in the window designer! Ok C6 didnt have that either, but I really dont see the use of mouse zooming in the text editor and not the window designer.

The code completion window could be better, although I have that set to 40, but some of the code automation options are not brilliant, at times I have code completion switched off.

Some parts of C11 ide is faster, but some bits are slower.

I miss the C6 F12 properties editor in the window designer.

Some parts of this docs also explains what else you can do with the IDE like

Now an additional feature of this runtime version facility for contractors is, when working on different clients projects, you can copy over their main Clarion folder containing their addons and label it appropriately.

Eg

< Properties name=“Clarion 6.9054”>

to

< Properties name=“Very Important Client Clarion 6.9054”>

Because the version control also works from specific folders, if you had a client subfolder structure like

C:\Clients[Client Name]\

you could paste their Clarion IDE files below the [Client Name] folder and then find their Clarion version using the drop down list box facility. Again if some information is not parsed properly or you want to further customise it, you can easily by editing the ClarionProperties.xml file < Properties name=“Clarion.Versions”> section.
Now each version has its own registry so when installing an addon for use with one or more versions of Clarion listed here, you will need to rerun the installation setup program for each version listed here. Now in the situation where the setup program detects the version of Clarion, you will need to override this functionality, and if you cant, then install it to one version that is detected and then copy the relevant files to each version of clarion listed here and then manually register the template having swapped versions and then restarted the IDE. A bit long winded but this is the only way to register the templates properly because each copy of the template registering is stored in its respectively folder:

C6 and earlier

C:\ [Clarion Version]\Template\Registry.TRF file

C:\Clients\ [Client Name]\ [Clarion Version]\Template\Registry.TRF file

C7 and later

C:\ [Clarion Version]\Template\Win\Registry.TRF file

C:\Clients\ [Client Name]\ [Clarion Version]\Template\Win\Registry.TRF file

So if you have ABC Classes that you want to use across multiple versions of Clarion, you can create a special folder which contains these classes eg

C:\ [Clarion Version]\ [Shared Across Versions]\Librsrc

This way if you don’t have to register them with a template, or the template allows you to select the [Shared Across Versions] before including them in your app, you can use this type of configuration within Clarion.

The Clarion Versions or Multiple Active Clarion Systems aka MACS, is extremely flexible for your needs, and there will likely other scenerios not mentined here in which it could be used for.

But then for things like the dictionary diagramming versus Peabody’s dct diagramming I have this

Dictionary Diagram

This Just does not work.
Do not change colours they do not change back and you cant create a new diagram using an existing diagram filename to overwrite it.

I have been through virtually every setting in C11 and I know what works, what breaks and I’ve got to do my own theme/style to at least give the IDE a go., but out the box, I’d have the C6 ide at the moment. And this document isnt finished.

My personal opinion having used C6 and C11, C11 is LIGHT YEARS better than C6. Just the larger template interfaces is worth it for me.

I think you could do the same with Tab Order Assistant (F9) combined with Properties (F4)

I actually use the F12 to alter the tab order, I use it for everything.

I didn’t undertand you. Can you give an example of what you do on C6 F12 that is missing now?

Hi Richard,

Like practically everyone else, the ability to use ADO in Clarion had slipped my mind. I think I did use it once, and it took me a few minutes to remember how to do a simple browse/form using ADO. I’m sure someone will correct me if I’m wrong, but I think a file-loaded ADO data set can probably do everything that a memory table (which is an add-on) can do. But I bet for 100 questions about memory tables on the newsgroups I bet you could only find one for people needing help using an ADO recordset. You’ve inspired me to have a bit of a play and see whether I can use a pre-loaded ADO recordset as the source for multiple dropdowns.

You should start a new thread if you are going to drift this much off subject …

You can move controls using Up/Down Buttons or by Drag-n-Drop.

To move items into a Parent (e.g. Group) many times you cannot use the TOA (must have children and must drag-n-drop IIRC) so you have to drag the control on Window into the Parent and the a message will ask you if you want to move into the Group.

You can also right-click on the TOA for a Popup to jump to Actions or Embeds

image

This thread drift is now here :grinning:
C6 F12 button and C11 pad discussion - ide - ClarionHub