OE Techniques and Coding

Code samples, whitepapers, and discussion on techniques for using various ABL features and solving various requirements faced in writing ABL code.


Code Samples

Small fragments of ABL code which illustrate some principle or technique


Coding Standards and Best Practice

Discussions and Examples related to coding standards and best practices in developing ABL applications


Components & Managers

Code samples which are unifed components or managers ready to be incorporated in other code


Interfaces to Other Languages or Databases

Code and tools for creating a connection between ABL applications and other language systems or databases


OOABL

Code, discussions, and whitepapers related to the use of object-oriented techniques in coding ABL applications.


Operating System and Application Interfaces

Information and examples for interfacing ABL applications to the operating system and common applications such as word processors, spreadsheets, and e-mail


ProDataSets

Documentation and examples on how to use ProDataSets


Reporting

Code, discussions, and whitepapers related to reporting from ABL applications


UI design guidelines

General User Interface design and review guidelines


Web Services & Other Integration Technologies

Whitepapers and code samples related to webservices and other related integration technologies.


Web UI Development

This section covers WebSpeed, Ajax, eScript and any other technology for creating and deploying browser user interfaces (WUI).


XML

Tools and samples related to the use of XML


Documenting how to use ProDataSets

This page was created with the idea that it would be the beginning entry in a series of contributions by multiple authors, eventually turning into general documentation on ProDataSets. After one early contribution by Tim not much got added until Miles came along with his large contribution which covers a lot of ground. While that was a big help, I am sure there can always be more, so I have left this page as a pointer for those who might consider making contributions. What I would like in particular I am describing below:

I would like two documentation hierarchies.


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.


OpenOffice.org Calc Library

This is a collection of functions and procedures that provide an API to the OpenOffice.org Calc spreadsheet application. These were developed in Progress 9.1D using OpenOffice.org 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!


OO Wish List

At the 2013 PUG Challenge Americas, there was a sort of semi-spontaneous OO information exchange with Rob Holzel, Evan Bleicher, and Shelley Chase.

I repeated this session at the 2013 PUG Challenge EMEA with assistance from Peter Judge, Rob Straight, and Shelley Chase. what follows is the result of these two sessions.

The new OO features in 11.3 include:

  • Private and protected are class, not instance, i.e., appropriate members of the same class can read attributes in other instances of the same class as in other OO languages. Implies statics can also access private members of instances to which they have a handle.
  • Dynamic access to Progress built-in classes, notably VST classes.
  • Cleaned up chained syntax.

With the usual disclaimers of no promises and no schedule, we reviewed a list of additions to OO which had been requested at one time or another and solicited additions to this list from the audience. Below is the combined list in four categories - Roadmap, Next, Other, and Last Set (interpretation is left to the reader and qualifications about no promises and no schedule clearly apply). There is no significant to the order within category. Priorities are likely to change over time and may be dependent both on the perceived value and the ease of implementation. There have been indications that upgrade of OO may be a higher priority now than in the past so items farther down on this list may not be as distant as one would have assumed them to be in the past, but again, nothing one can count on. There are always limitations in budget and personnel and competing priorities.


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.


Browserbuilder

browse-dialogsmbrowse-dialogsm

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.


Replacing A Session SuperProcedure With A Class In OOABL

Progress Software has numerous references in documentation and whitepapers to the parallels between superprocedures and classes, including a fairly lengthy, if somewhat flawed example in the Getting Started: Object-Oriented Programming manual for 10.1A that shows two parallel examples, one worked using superprocedures and one worked using classes. However, what is not shown is an example in which a class replaces a superprocedure while retaining the original program structure as a set of procedures. For a local super-procedure, this substitution is simple because the class does not need to be accessible except from the procedure that instantiates it. For a session superprocedure, a different functionality is required because the internal procedures of the session superprocedure become a part of the name space of procedures that did not invoke the superprocedure.


Hungarian Notation for OOABL

The use of any form of Hungarian Notation is a topic certain to produce intense opinions, whether pro or con. Since CI intends to use a form of Hungarian Notation in its published examples and foundation classes, it seems worthwhile to review the reasons for this choice and the specifics of the standards that will be used.


Exception and Condition Handling Classes

One of the problems faced by ABL programmers for many years is the lack of a true exception handling mechanism in the language. By “exception handling”, we mean a mechanism by which a program encounters an error or unexpected condition then can communicate up the call stack with the purpose of:
1. Signaling that requested execution has not completed as expected;
2. Communicating any necessary information about the details of why this condition occurred; and
3. Providing a structure such that the condition is “handled” in a graceful fashion at an appropriate level in the code.


Collection and Map Classes for OOABL

In developing a foundation framework for Object-Oriented ABL, it seems natural to consider creating a set of Collection classes since they have a broad utility in OO design in other languages. It also seems natural to consider imitating the Collection classes in Java since that is a tried and true implementation into which there has been a considerable investment of thought and effort.


Syndicate content