ABL(4GL) General Programming Group

This group is for topics on coding in ABL (formerly known as Progress 4GL). Topics include code snippets, code examples, utility programs, tricks, techniques, and patterns. There are other groups for other more specific topics like Win32 API, OO programming, and specific programming tools.


Fastest way to aggregate a character list

The fastest way to aggregate a list of character values when all values are non null is to *always* add the delimiter *before* the next element inside the loop and remove it afterward with cList = SUBSTRING(cList, LENGTH(cDelimiter) + 1)


Open Edge 10.1B

Hello..

Can any one provide me some turorials on Open Edge 10.1B.

Thanks
Progress2007


SEARCH for file existence

The SEARCH function is 30 to 70% faster than FILE-INFO:FILE-NAME to test for file existence if you expect that the file searched exists most of the time (if the file does not exist, both methods are equivalent).


Outlook Code Samples

Recently many people have been asking some questions regarding progress integration with outlook. Well i found most my outlook samples that i had. Some were written by some weren't.

Contents
-Outlook 2000 and XP GLobal Defs
-Read/Write Tasks/Appts/Notes/Emails
-Creating Items
-Outlook Events
-Docs
-VBScripts
And many more!


Print a image is possible ?

Are there someone that knows how can I print a image in progress ?


Fastest way to test that a character value contains nothing

When you want to verify that a character value does not contain any character (i.e. it is "" or ?), using the construct TRUE <> (someCharacterExpression > "") is your best buy


FORWARD-ONLY on QUERY

Use FORWARD-ONLY = TRUE on a QUERY that just goes from a record to the next (as a "FOR EACH" does).


HELP GDI X PORGRESS

Good afternoon.
A customer had the "shining idea...". To show to graphs right-handers in the screen of a program progress.
I made the following one:
1º I declared gdi as one procedure external:

.

PROCEDURE Rectangle EXTERNAL “GDI.dll” :
DEFINE INPUT PARAMETER nLeftRectx AS LONG .
DEFINE INPUT PARAMETER nLeftRect AS LONG .
DEFINE INPUT PARAMETER nTopRect AS LONG .
DEFINE INPUT PARAMETER nRightRect AS LONG .
DEFINE INPUT PARAMETER nBottomRect AS LONG .
END PROCEDURE.

PROCEDURE PAINT :


MAPI Problem

Hi,

I downloaded the MAPI code that allows for multiple attachments. I ran the program and it created an e-mail message in my Outbox. The problem is that when I tried to run it again I get a Progress error telling me that it cannot find windows.i. It seems to make a mess of my path. Any ideas why this happens?

Stuart Richler
stuart@gtrdta.com


I need a 4gl programmer...help!!

I have a company in Indiana and currently need a 4gl programmer with 2-5yrs experience to work in Michigan. If you know of anyone or are interested in the position please contact me as soon as possible!! ph.260-469-3131


For temp-tables, let ABL fail on unique index instead of using a CAN-FIND prior to creating each record

When adding records to a temp-table having at least a unique index, it can be faster to trap the ABL error generated on a collision instead of using a CAN-FIND prior to creating each record.


Problem with _osprint.p reporting

Hi guys,

I have a problem with printing using _osprint. I does print but the first 9 or 10 characters
of the output is not printed on the paper. What I mean is, if you try to see, those characters
are printed off the paper. Here's how i called it..

RUN adecomm\_osprint.p ( INPUT hWindow,
INPUT vCh_path,
INPUT 25,
INPUT 1 + 2 + 8,
INPUT 0,
INPUT 2,


ASSIGN for speed when assigning variables or fields.

Assigning values to any number of variables is always faster when grouped in an ASSIGN statement compared to being set independently.


Fastest way to test that a character value contains something

When you want to verify that a character value contains characters, using the construct:
someCharacterValue > ""
is, on average in my test, 10% (for a void string) to 27% (for a ? string) faster than the second fastest construct (not to mention that it is also shorter to type; not to mention that it is also 33% to 50% faster then the slowest of the constructs presented here)


CASE TRUE instead of cascading IF THEN ELSE

To make code easier to read when you want to perform some logic on the first TRUE condition that you encounter, instead of using cascading IF THEN ELSE, you can use a CASE TRUE statement (it works because a CASE enters the first block that has a condition that matches the criteria of the CASE).


#
Syndicate content