Language reference
Client/server-era 4GL still running mid-market line-of-business apps.
PowerBuilder traces back to Computer Solutions Inc., founded by Mitchell Kertzman in Massachusetts in 1974, which built MRP II software before rebranding as Powersoft in 1990 and shipping PowerBuilder 1.0 in July 1991. It rode the early-1990s shift from mainframe terminals to client/server computing: PowerBuilder let developers build a graphical, database-backed application quickly, at a moment when that combination was still genuinely hard to do. Powersoft went public in February 1993, and Sybase acquired it in a stock deal worth roughly 904 million dollars that closed in February 1995.
PowerBuilder was built around rapid application development for client/server systems, and its signature feature, DataWindow, is the clearest expression of that goal: a visual object that handles retrieving, displaying, editing, and updating database data with a fraction of the hand-written SQL a comparable tool of the era required. That made PowerBuilder extremely productive for the CRUD-heavy business applications that make up most enterprise software, at the cost of tying applications tightly to a client/server model that later lost ground to the web.
1991 · PowerBuilder 1.0
Released in July by Powersoft as a client/server rapid application development tool.
1993 · Powersoft IPO
Shares closed at 38 dollars, up from a 20 dollar initial price, on February 3.
1995 · Sybase acquisition
Sybase's acquisition of Powersoft closes in February at approximately 904 million dollars.
1998 · Peak adoption
PowerBuilder usage peaks at an estimated 100,000 users.
2010 · SAP acquires Sybase
PowerBuilder becomes part of SAP's portfolio; a major upgrade adds .NET Framework support.
2016 · Appeon partnership
SAP and Appeon agree, on July 5, that Appeon will develop, sell, and support PowerBuilder going forward.
2025 · PowerBuilder 2025
Released May 7 with a revamped IDE and a substantially faster compiler.
18,000+ organizations
Organizations Appeon states have adopted PowerBuilder to build business applications, across government, insurance, and other sectors.
Appeon: PowerBuilder product page~100,000 users at peak
Estimated peak PowerBuilder user base, reached around 1998.
Wikipedia: PowerBuilderPowerBuilder history and figures compiled from public sources, cited above. Corrections welcome.
The application attempted to divide a value by zero at runtime.
Add an explicit check for a zero divisor before the division, or wrap the operation in a TRY-CATCH block for DivideByZeroError so the application can recover instead of crashing.
The application referenced a property or method on an object reference that is currently null, commonly a DataWindow control or DataStore that was never assigned an actual DataWindow object, only declared.
Confirm the DataWindow object was actually created and assigned before use, not just declared. A DataStore or DataWindow control is a container; it needs SetTransObject and an actual dataobject assignment, or a call like Create(), before its properties and data can be referenced. This is the single most common runtime error reported in PowerBuilder forums, and it is thrown by the NullObjectError system exception class specifically so it can be caught separately from other runtime errors.
The program referenced an array index that does not exist, either negative or beyond the array's current upper bound.
Check the index expression against the array's actual current size with UpperBound(), especially inside loops driven by a count computed earlier in the script that may no longer match the array's real size.
A DataWindow method referenced a row or column number that does not exist in the current result set or object definition.
Check the row number against RowCount() and the column number or name against the DataWindow object's actual column definitions, especially after a Retrieve() that may have returned fewer rows than the script assumes.
Yes. Appeon, an independent company, has owned PowerBuilder's development since 2016 and released PowerBuilder 2025 with a rebuilt IDE and faster compiler.
DataWindow is PowerBuilder's signature feature: a visual object that handles retrieving, displaying, editing, and updating database data with minimal hand-written SQL.
R0002, null object reference, is the most frequently reported PowerBuilder runtime error, almost always from referencing a DataWindow control or DataStore before it's been assigned an actual DataWindow object.
PowerBuilder was developed by Powersoft Corporation, founded by Mitchell Kertzman, and first released in July 1991 as a rapid application development tool built around the DataWindow and the PowerScript language.
PowerScript is PowerBuilder's native, proprietary programming language. It's often described by developers as a language built around the DataWindow, since so much of its idiomatic usage centers on retrieving, displaying, and manipulating DataWindow objects rather than general-purpose logic.
No. The PowerBuilder IDE runs exclusively on Microsoft Windows. Deploying PowerBuilder-built applications to other platforms or to the web requires a separate product, such as Appeon PowerServer, which converts applications to run as installable cloud apps rather than running the IDE itself cross-platform.
As of PowerBuilder 2025, yes, more so than before. That release replaced the older binary PBL library file format with plain-text source files and added native Git integration including fetch and rebase support, which makes standard diffing and pull-request review workflows practical in a way they weren't with the old binary format.
PowerServer converts an existing PowerBuilder client/server application, including its DataWindow objects, into an installable cloud app that runs on .NET Core with a REST API middle tier. It's a deployment-model conversion rather than a rewrite: the goal is to keep the PowerBuilder-authored business logic largely intact while changing how and where the application runs.
Powersoft originally developed PowerBuilder and was acquired by Sybase in 1995 in a deal valued at roughly $904 million. SAP then acquired Sybase in 2010, and in 2016 SAP entered an agreement making Appeon, an independent company, responsible for PowerBuilder's development, sales, and support going forward.
Real questions from public forum threads, with credit to who asked and who answered. Our answer restates the fix and links to the matching reference page where one exists.
Is PowerBuilder actually dying, and is there anything that could realistically stop it?
Asked by PowerObject! (Shekar Reddy) on Appeon Community forum, October 2022
“No new developers have picked up PowerBuilder in over 20 years; nearly all current work is legacy maintenance, not new projects, and U.S. job listings are close to nonexistent. Proposed fixes: a free community edition to lower the adoption barrier the way Java and C# have, plus university partnerships and a revived certification track to rebuild the pipeline.”
PowerObject! (Shekar Reddy), in the original post
The diagnosis matches what shows up everywhere else in the data: a large installed base (Appeon claims 18,000-plus organizations), essentially no new-developer pipeline, and a platform whose owner keeps shipping real releases (PowerBuilder 2025 arrived with a faster compiler and a revamped IDE) rather than treating it as end-of-life. That combination, real investment plus a shrinking workforce, is exactly the shape of the modernization opportunity this site tracks, not a sign the platform is about to vanish overnight.
I keep getting error R0002, null object reference, when I try to read data out of my DataStore. What am I missing?
Asked by chedderslam on Tek-Tips forum, ongoing thread
“A DataStore or DataWindow control is only a container. You have to actually create a DataWindow object, assign it as the dataobject, and populate it (InsertRow and SetItem, or a real Retrieve) before referencing its data. Assigning nothing and then reading from it is what throws the null object reference.”
Thekl0wn
R0002 is the single most commonly reported PowerBuilder runtime error for exactly this reason: the container and the object it holds are two different things, and PowerBuilder lets you reference the container before it holds anything at all. If you hit it, check that the DataWindow object itself was actually created and assigned, not just the control or DataStore that is meant to hold it.
Full reference page →Compilers & platforms
Disambiguation across vendors.
Modernization guides
Cost, timeline, migration paths.
Vendors
Modernization consultancy comparison.
Migration checklist
What to check before or after a compiler move.
Salary & rate benchmark
What PowerBuilder work actually pays.
Vendor match
Two questions to the right vendor.