Clarion Training Plan Outline

I get it, but it is what it is. Much of this code predates ST (for example), and similar things that didnt exist when those parts of the code were first written. Even so, with 1.5-2MM lines of code, things that work tend to be left alone.

So, I wasn’t suggesting you change, but rather following the thought through -

given the size of this project, learning clarion will be a small part of the puzzle. Learning what functions already exist in the program, and how to use them, may be the bigger challenge. If your app is anything like ours then none of this is documented from a “new developer” perspective, so passing on that institutional knowledge of what functions exists, and what they do, is likely the harder part…

CwUtil FileExists() can do (‘*.clw’) because it uses FindFirstFile() so supports wild cards that RTL EXISTS() does not. I usually write a little function using Directory() when I want wildcards, but FindFirstFile() would be much quicker loading just the first file.

I think the name is misleading because it will find Files and Directories. Almost always I want to know specifically one. If a File named ‘EXPORT’ exists that will cause problems creating file ‘Export\pay,csv’. The easy way to do that (w/o wildcards) is with GetFileAttributes like this: ExistsDirectory() or ExistsFile() using GetFileAttributes() instead of Clarion Exists() · GitHub

1 Like

FindFirstFile has (or had?) some gnarly issues on networks. At one point, it was completely not dependable for network drive resources - but I dont know if that has been fixed.

Yes, exactly.

The idea is meeting all of that somewhere in the middle, The part of the curriculum I didnt share is specific to the app and the regular duties of adding to / maintaining it.

Exactly (all of that). I remember first running into this on Win2k.

True, but we dont participate in that nightmare:) Unshared TPS opened by 1 person, or SQL (via REST).

REST lets us use the same code for local or WAN installs with no drivers and very little firewall issues. It also avoids opening databases to the world. WAN performance is usually better than remote SQL and a ton safer.

I mean a REST API - but not those. Ours is proprietary to us.

Topics not mentioned above: GPF’s and Version control

1 Like

Thanks Eric. Git isnt on the list because it is assumed that any experienced developer using another language would already know it. I have added this assumption explicitly to the audience section in order to clarify that expectation. The GPF stuff is definitely important.

one GPF to describe - as it’s UNDOCUMENTED
when you have a class with a module attribute (typically added to code via an INCLUDE)
it’s REQUIRED that the class appears at a static scope (which is to say global or module scope)

Otherwise, it will compile fine, but will GPF as soon as you touch the class

That’s true with API/external prototypes too.