PBNI Extensions

PBNI = PowerBuilder Native Interface, it's a SDK provided by Sybase that let you create some extensions for PB in C++ (with Microsoft Visual Studio)

Fork me on GitHub

PbniRegex + PbRegexCoach

As an attempt to fix the performance issue of unvo_regexp I've written a PBNI extension that can execute perl-compatible regexps (with the PCRE engine). The extension also provides a replaceall global function.
The extension is written with the SDK given with PB and starting from samples found on Codexchange.

Key features of uo_regex object:

To test the extension, I have also made PbRegexCoach (kinda remake of The Regex Coach) :
That application also reuses several components written by Nicolas Georges : auto-resizer, horizontal & vertical splitters derived from Roland Smith ones. He has also published an example of pbniregex usage.
Extension pbniregex.zip (sources included) + PbRegexCoach - Last update: Saturday April 1 2017.

Fork me on GitHub


The hashtable (also : dictionary, associative array) is a useful data structure, alas it is not available natively in Powerbuilder.
The libhashish opensource lib implements several hashing algorithms under GNU/Linux. I have ported that lib to Windows thanks to MinGW (Nicolas Georges has disabled the tree hashing algorithm for allowing us to reuse libhashish under the BSD licence) and I have wrote a pbni extension that provides hashtables to Powerscript.

The libhashish has many features but my wrapper is limitted to the bare features :

Extension pbnihash.zip (sources included) + PB sample - Last update: Tuesday July 17 2018.

Fork me on GitHub


The linked list is another missing feature from PowerBuilder. Since the pbni sdk is in C++ I have used the STL to implement a list (uo_list) and a vector (uo_vector).
My own lists and vectors have the following interesting features:

Extension pbnilist.zip (sources included) + PB sample - Last update: Tuesday April 11 2017.


PbniCW - Cool Wrappers

These are several wrappers that could not be included in former extensions.
List of features :

Known bugs

Extension pbnicw.zip (sources included) + PB sample - Last update: Monday 17 May 2010.


Other components - userobjects


unvo_regexp is a native userobject that remaps vbscript.regex OLE object (author : Nicolas Georges). The supported syntax is listed in the instance variables view (it's the regular vbscript.regex syntax).
That userobject is quite useful for casual usage. But the performance is not that good for example if you instanciate the object in loops due to the connection to the OLE object in the constructor event.



Roland Smith has published in Topwiz Software a PB warpper for the Scintilla editor. With the help of Nicolas Georges, I have added the support for margin icons, code completion and others features. Here is my implementation : u_scilexer.sru (you need also the scintilla dll renamed to "scilexer.dll").
Last update: Sunday October 30 2011.


n_zlib.sru: another component from Roland Smith to wrap the zlib in PB. I have added the support for the gzipped streams to Roland's implementation.
Last update: Wednesday June 11 2014.


nv_mailslot.sru is an object to use the mailslots (the mailslot is a solution for inter-process communication under Windows). To test the implementation, I have coded a sample in PB and another one in java : MailSlotPB.zip.


nv_codec_base64.sru is a pbscript implementation of a base64 codec (for a decent performance there is a dependency with pbnicw for the bitwise operations). The encoding is quite slow though for big amounts of data, do not use it on mega bytes...

Complementary tools


libexport is a little tool I wrote to test the export of pbl objects in PBScript.
You can export the whole pbl or just a selection. The objects are exported in UTF-16le format with their library comments.

libexport.zip - Last update: Friday June 10 2016

FILL ME: script perl check pbg
FILL ME: script perl dw


pbdumper is an experimental tool that can export the whole content of a PB library (pbl / pbd) or PB dll or executable. This tool was successfully tested with libs produced by PB from the version 5 to 10.5 and should work also with PB 11 / PB 12 if the pbl structure did not changed. I have used that tool to get some resources from applications that were written by my company and sources eventually lost.
It is written in C99 and built with MinGW. This tool could not have existed without the precious infos from the PBL file format released by Arnd Schmidt. He also made some tools to explore the PB libraries.
Todo :

pbdumper - Last update: Tuesday March 13 2012