Abe Voelker Programming stuff, mainly

Cure for the Plague: A Theoretical Progress / OpenEdge ABL Migration Plan

20 minute read

The Triumpth of Death oil painting

I think my opinion on Progress OpenEdge ABL (henceforth known as “the Plague”) as a programming language / DBMS is well known, but here is a short summary in case you missed it:

Read more

Longchar sucks. Introducing BigCharacter

4 minute read

Now that I’ve got your attention, let me say this: LONGCHAR doesn’t always suck. But, it definitely does suck sometimes

The Bug

Here’s an example. How long does it take for this code to complete on your system?

DEF VAR lc AS LONGCHAR NO-UNDO.
DEF VAR i  AS INT      NO-UNDO.

DO i=1 TO 1000000:
  lc = lc + STRING(i).
  IF i MOD 100 EQ 0 THEN
    STATUS DEFAULT STRING(i).
END.
Read more

OpenEdge ABL Utility: Get Program Parameters (Main Block) from R-code

6 minute read

I have recently been working on a new compiler interface and backend for my workplace. I am pretty much done with it at this point - and the adventure is worthy of it’s own blog post - however, I thought I would share a little script with the world that might be useful to others.

Basically, I wanted to table-ize as much meta information about a program as possible when it gets compiled. One piece of information I wanted is the main block parameters of a program (e.g. DEFINE INPUT PARAMETER ipcString AS CHARACTER. at the top of the program). I mean, how cool would it be to do a simple check on RUN statements to see if they will fail at compile-time (by checking existing compile snapshots of the program referenced by the RUN; assuming of course that the RUN statement can be evaluated at compile-time)?

Read more

Progress / OpenEdge ABL Language and DBMS Considered Harmful

28 minute read

I won’t go into any detail about how I got the job I currently have programming in Progress OpenEdge ABL, but suffice to say I knew I was in deep trouble from the start when most of the documents about the Progress language I read when learning the language were more focused on “business logic” and how the language makes things “easy” on the programmer rather than displaying the language’s real raw technical strengths.

The cold chill down my spine that I initially felt upon glancing at the language documents has since turned into a fiery rage that burns with the intensity of a thousand suns after having learned it. I have done my best to make do with the language’s limitations, and I believe I have pushed it to about as far as it can go without directly linking into external .NET libraries.

Read more