4GL Query Optimizer Base Line

4GL Query Optimizer Base Line.

If a company wants to back this project I believe we can have a running version within 2 to 3 month.

It is up to us to build one.

4GL Thrown Exceptions

The project is now part of the Standard Libraries project


Unzip the files, make sure they're on the PROPATH and that's it.

4GLTrace LOG-MANAGER Reporter

Reads output from a LOG-MANAGER:LOG-ENTRY-TYPE = "4GLTRACE:4" and reports the line number, date, time, statement elapsed time, total elapsed time, nesting level, action, action adjective, and remaining data in a columnar format

ABHack Project

This project is for maintenance and continued enhancements to ABHack.


Adapter to send and receive XML messages to and from an ESB. In this first version Sonic. Also usable to generate XSD's that can be used during a design phase.

Working on getting the source cleaned to put it here.


abljsonabljsonJSON Parser for Progress ABL is a "wrapper" for the cJSON parser - ultra-lightweight, portable, single-file, simple-as-can-be ANSI-C compliant JSON parser.

The reader object can be used to load and parse a JSON string from either a file on the file system or from a character, longchar or memptr variable.

Alias Converter

Converts progress app builder aliases to open edge architect macros.

alon sandbox

Alon test project in Sandbox group

Application performance profile viewer

This profiler identifies performancebottlenecks in your application by analysing the logfile you create with the log-manager. ProfilerProfiler


AutoDox is an automated code documentor which uses Proparse to find significant features in your programs and then output details of these features in HTML documents. Some features so far reported in the generated documents are a program's parameters, internal procedures and functions, as well as comments where possible.

AutoEdge Issue Tracker

Issue tracker for Progress Software's AutoEdge reference implementation of OERA.


This Procedure allows you to export almost any browser-content to an excel-sheet via a simple run-statement



This is a dynamic browserwindow, browse_exp.p in the zipfile, fed from a minimal repository to get the specific UI and query. It should compile starting from 9.1D as its most modern language-element is the CALL object. You can easily maintain the repository with the "browserbuilder" utility that I have put in this package also.

Database Activity Monitor

A ChUI Database Activity Monitor that asks you to select a database connection. Database activity for that connection is then displayed in a browses - there is a Table view and an Index view. Reads / Creates / Updates by Table or Index. The activity is read from _UserTableStat and _UserIndexStat VSTs. There is a one minute auto-refresh, or it can be refreshed manually by pressing the space bar. There is a hotkey to display the stack trace for the connection, but statement caching must be enabled for this to work. There is an option to reset all stats to Zero.


What is the DataDigger?

The DataDigger is a window that shows all tables in all connected databases. You can select a table, select which fields you want to see and browse through the data of that table. You can add, update, delete, import and export the data, even multiple records at the same time.

The DataDigger is free and can be found at


Date Picker in pure ABL

This Time picker is written pure in 4GL/ABL. No need to using any other ocx. I written this tool because I don't like to use MS products much... :)

This code is written in Turkish but I'm sure it's easily to convert other languages by coder...



Hi guys,
I tried to create a program that will generate code that will export table contents to excel
and wanted other people to test my project. (P.S. Please excuse my coding, I'm just a starter with progress :}).

This program is created using Openedge 10.1B and tested using Microsoft Excel 2007
DB2Excel is a program that automatically generates code for importing data to excel.

Step 1: db2Excel Collects tables from the database and makes them available for selection.
(if needed for schema preview, you can edit the source code to view system tables)

Determine whether Progress is 32- or 64-bit

This is a bash script that determines whether the Progress version installed on a *nix system is 32-bit or 64-bit. It also determines whether the O/S is 32- or 64-bit, though this has not been widely tested. It can be conveniently called from other scripts by running with the -s switch and checking the return value (32 or 64, or 0 on error).

The script needs to be able to find the Progress installation in order to run. It will check $DLC, $PATH, and /usr/dlc.

Typical usage:

Progress is 64 bits; OS is 64 bits

> ./ -s
> echo $?

DOM Tool Kit

Working with the DOM ABL statements can be a bit grueling. This tool kit makes four easy to use procedures and functions to read any given instance of an XML document tag's data or it's attributes based on the ideas found in Javascript.

A sample use:


<?xml version="1.0" ?>
     <Title subject="SciFi" entry="one">War OF The Worlds</Title>
     <Title subject="SciFi" entry="two">Battlestar Galactica</Title>

Dynamic Query Tool Kit

A set of routines to aid with developing software containing dynamic queries. It greatly simplifies coding and readability.

With Progress Version 9.1, a very powerful feature was added to the language – dynamic queries.

Great as they are – it takes a lot of work to make use of this new feature. It is the purpose of this tool kit to aid with simplifying dynamic queries for the developer.

The tool kit provides a set of functions that can be used to open, navigate, extract data from, and close dynamic queries in a straight forward and easy to use manner.

Dynamic Transaction (record write,delete.create)

have two procedures that work that can called from trigger level within trigger. They passed a number of paramters including one temp-table containing create/delete information , the 2nd program accepts the current new record and the old record


DEF TEMP-TABLE ttnewCustomer LIKE Customer.
CREATE ttnewcustomer.
BUFFER-COPY customer TO ttnewcustomer.
DEF TEMP-TABLE ttoldCustomer LIKE customer.
CREATE ttoldcustomer.
BUFFER-COPY oldcustomer TO ttoldCustomer.

EmailTester2 (Read Receipts, Security Bypass)

This is my first project, it's really buggy at the moment and i would like the help from anyone willing to optimize this email program. I don't have any documentation or anything out yet i just wanted to use this to get it out and fix some problems.

Some of the main features at the moment are Read receipts delivery receipts, send on behalf of, and outlook Security bypass.

Im using the mapi email and using a redemption.dll to bypass security this is optional. This was created to test out some mailitem properties and then we decided to use it with our customer invoice reports.

Example function to return various date formats. YYYYMMDD

In this example function you pass to it the format you want YYYYMMDD YYMMDD ISO etc. along with date and time delimiters you wish to use. This does use the NOW statement which is not in older versions.

ganimede - transaction server

The goal of this project is to make possible to access Progress database from any external program that can use sockets. The server (broker and agents) are written in Progress 4GL and made use of sockets capabilities of Progress V9.

Generate include files for Windows constants

The included program allows the generation of include files containing pre-processor definition for all of the constants within any type library. Type libraries may either be specific type library files (.olb,.tlb) or can be contained within .exe,.dll or .ocx files.
I typically need to know constants when working with COM or ActiveX objects in the 4GL. Often, the documentation for such objects refers to various property values by the name of the constant. This is because most documentation is geared towards development environments where the constant values will automatically be made available to the developer. Such is not the case for Progress.

GUI OpenEdge Password Meter

A password meter written in ABL.
It is database independent and uses the first connected database for the session.
By default it has 2 levels of strength that can be easily checked for and/or required: Strong Passwords and Xtra Strong Passwords
It checks for the following:
Required for strong passwords:
Length of 12 to 24 characters
Use of all 4 types of characters
Not the same as the previous 5 passwords
No personal names (first or last) and no company names or company acronym (hard-coded).

Required for Xtra strong passwords:
At least 2 upper case letters used

How to add a colored square in the titlebar through api

Sometimes it's neccessary to add a Caption in the titlebar to give extra information to the user of your application. The attached file does this, and makes sure the window got redrawn when windows triggers arive.
As you can see, many instances of msgblst32 are added on this window. The goal is to make it more the controlling window which always catches the events on the underlaying session applications. As every window needs its own ocx, I provided 40 instances which are hopefully enough to maintain every window.


This project is for the maintenance and support of John Green's "jpjvm" DLL, which loads a JVM into a Progress/OpenEdge session.


Lightweight, fast and extensible message queue bridge that can connect different message providers such as Progress Sonic MQ or IBM WebSphere MQ (former MQ Series). Plugins for JMS and MQI are provided.

The project is hosted on

Justus OpenEdge Tools

Justus is a toolset for Progress 4GL that helps developers to increase quality of your projects. Justus includes a simplified 4GL parser and a test coverage tool to identify gaps on Test phase.
Future releases also include a search tool, white-box tests and dependency checker.

** Looking for Volunteers **

KsvPlugin for OpenEdge Architect

KsvPlugin for OEA is a set of useful tools which allows you to make your work with OpenEdge Architect more productive and less painful. It softens project-centric paradigm of Eclipse allowing you to develop in good old way of Procedure Editor. The set includes some tools which were developed for Ksv Editor (a modification of Procedure Editor).



There's a very good plugin for Eclipse which integrates Eclipse with Microsoft Visual SourceSafe. It's org.vssplugin developed by Marcus Nylander, unfortunately it's not been updated since 2007. The latest version is 1.6.2 and it was developed for Eclipse 3.2, so it doesn't work with 3.4 and higher. Since I work with a quite unique VSS configuration I desperately needed to modify this plugin but before that I had to make it work on Eclipse 3.4.


Maia is a Progress ABL code generator that takes a user-defined template and produces clean, understandable, consistent code. If you have ever copied and pasted a block of code, then Maia is for you. Maia removes the need for manual code duplication.

Even better, Maia removes the need for the vast majority of dynamic coding, making your code understandable to the programmer that follows you

Memoryleak inspector

Identifies possible memory leaks and their source by extracting those lines from logmanager output that point at created objects that are not deleted later on or allocated space that is not (fully) deallocated.
This analyser goes a bit further than and can handle OE 10.2A extra's


Use Ed4W as a code editor for Progress, including syntax check and intelligent code expansion.

OERA OSI Project

This is the project for tracking work on the OERA Open Source Initiative. Use it for feature requests, issue tracking, bug reports and the like. Use the forum for general discussion and add comments to individual pages of content as appropriate.

OEUnit - Unit Testing Framework


Project moved to GitHub. Feel free to fork and make changes, and I will endeavour to integrate any pull requests.

Screenshot: OEUnit results from running a simple test case.Screenshot: OEUnit results from running a simple test case.

OO Sockets in OpenEdge

A set of classes and programs to allow you to use client and server sockets in the Openedge ABL

OpenEdge Database Advisor

The OpenEdge Database Advisor is intended to provide a quick checkup for common database configuration issues. Obviously proper tuning for an application requires much more than any tool can provide, but the advisor should highlight some of the most common low hanging fruit.

For best results you will need a recent database analysis file (proutil -C dbanalys) and you should run this against your production database. A large portion of the suggestions will be based on VST information that will differ greatly between your production and test environments.

OpenEdge Perspective Switcher

This Plugin allows the developer to control when the Perspective is changed automatically between the OpenEdge Editor/Appbuilder and Visual Designer Perspectives based on the file extension and the Editor that is being used to edit the file.

OpenEdge Perspective Switcher PreferencesOpenEdge Perspective Switcher Preferences

Install the Plugin by extracting the .zip file and then copying the .jar file into the dropins directory of your Progress Developer Studio (ie: C:\Progress\OpenEdge\oeide\eclipse\dropins).

OpenEdge Session Tracing

Tuning OpenEdge application code can be daunting for a beginner. Although the tools required to debug and tune your code are available in the 4GL, they are not always easy to use and understand. This toolset aims to simplify the process of tuning without requiring major (or any) changes to your code. Calc Library

This is a collection of functions and procedures that provide an API to the Calc spreadsheet application. These were developed in Progress 9.1D using version 1.1.2 and have not yet been verified to work with version 2+.

This collection of functions and procedures will allow you to programmatically create Calc spreadsheets, add data, format columns, rows and cells and more!


PCT (Progress Compilation Tools) is a set of ANT tasks, designed to compile Progress® procedures and dump/load databases.

PCT is distributed under the Apache License.

This project was born due to the lack of automated Progress® code compiler. PCT is a command-line based tool, so it can be run in batch mode, to generate nightly builds for example. However, as PCT is a set of ANT tasks, your compilation tasks can be run using a graphical frontend to ANT.

PDF Include project

This project is for support, maintenance, and continued enhancements to PDF Include. PDF Include is a set of 4GL/ABL programs which allow you to generate PDF reports.


PRO/Dox by Gordon Campbell takes AutoDox in two whole new directions. First, it generates XML instead of HTML, so that documentation can more easily be rendered in other formats (Word, PDF, etc). Second, it generates wire-frame diagrams of the frames it finds in your source code!

Procedure Manager

The procedure manager provides a standardized way of managing when a persistent or super procedure is instantiated, which procedures parent it, how many procedure instances are created, and when they are deleted.

The primary application for this program is enabling writing new PP/SP code with OO style structures, which enables easier development of new code and upgrading existing legacy applications with minimal code impact.

Prolint Issue Tracker

Prolint reads your source code and looks for bugs and does suggestions for improvements. This Prolint project works in conjuction with the Prolint group

If you have an idea for a new rule, please use the Issue Tracker and use the combo-boxes to specify "component=rule" and "category=feature request".

But of course you can use the Issue Tracker for other issues too.

Proparse Project

This project is for maintenance and continued enhancements to the Proparse ABL parser.

Proparse-Based Utilities

This project gathers various utilities related to parsing code. This includes tools for viewing or converting Proparse's syntax tree, utilities for find and report, utilities for search and replace, etc.

ProRefactor project

This project is for maintenance and continued enhancements to the ProRefactor libraries for working with Proparse's syntax tree. Includes tree parsing, symbol tables, persistent storage of the syntax trees, project configuration, Eclipse integration, etc.


The ProStyle project uses various features from Proparse in order to pretty-print P4GL/ABL.

ProUnit Test Framework

ProUnit is a Unit Test Framework designed to improve Progress applications quality. Specially focused on automation, ProUnit is better used with Continuous Integration and build scripting tools like PCT, ANT, Bamboo, Hudson, etc.


A reusable .p that gives you the contents of an xml in two temp-tables (elements and attributes).
See the fileheader for a how-to-use.

Static Temp-Table export to Excel

Another option to export a static temp-table to a new Excel file (Windows ONLY)



svnhook is a subversion hook for the old editor and appbuilder.

svnhook is compatible with Progress version 9 or higher and works on both Windows and UNIX/Linux.

svnhook is based on The Progress Standard Libraries version 01.01.02 or higher.

The Zip file comes with a procedure for loading files into your repository.

I recommend TortoiseSVN with WinMerge for browsing through your repository.

Table Block Mapping For Type I Areas

Many people know of the perils of record scatter and fragmentation with Type I areas. This tool provides an easy way to determine how scattered your data is and present that information in an easy to view HTML format. Primarily I use this tool to explain to non technical clients and managers why we need to migrate data from Type I to Type II areas.

You specify which tables are to be mapped by passing which areas or tables to the tool. CAN-DO style lists are supported in order to easily exclude larger tables from the list.

Temp-table to COM Excel

This is a procedure i wrote some years ago now. want to do the same for xml csv , then seperate one for pdf and rtf templates if you want full details of project let me know

Testing character values to see if they are integer, decimal or character values.

This set of examples show various methods to test for character, integer, and decimal values.
The various test methods came from a discussion on the PEG and suggestions by members and myself.

Typical time results per 100,000 iterations of the functions.

¦-123                                              ¦
¦                                                  ¦
¦fn-ISCHAR-loop:   31510 ms no  Loop method        ¦
¦fn-ISCHAR:         3681 ms no  DEC(x) error method¦

The DocxFactory Project

DocxFactory is a free project for generating .DOCX files.

Features at a glance -

The Hive project

This is where "The OpenEdge Hive" is maintained and built. You can find site documentation, submit bugs and feature requests if something on the website does not work well, and you can discuss the features of this website in the Hive group. Submit specific issues on the The Hive Project Issue Tracker and more general discussion on the The Hive Group Forum

The Progress STandard Libraries (STL)

The Progress Standard Libraries

In general the libraries are compatible with Progress version 9 and upwards and are O/S neutral, unless noted differently.

To install the libraries place the slib/ directory in a directory on your PROPATH and you're ready to go, no need to change your PROPATH.

I usually just copy the slib dir to every project I do.

To use a library add the library include file to the external procedure file.

Although the libraries are essentially persistent super procedures.


Thing is a free UNIX and Windows® Progress® data editor, table editor, browser, searcher, field locator and dictionary display tool useful for program development.

Word Documents Created from OE

The project creates Word documents using the Office Automation object based on user selected database content.