Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>OpenEdge ABL PropertiesNew to Visual Studio Code? Get it now.
OpenEdge ABL Properties

OpenEdge ABL Properties

Samuel Etterlen

|
1 install
| (0) | Free
A VsCode extension that lets the user configure the databases on an ABL project
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

OpenEdge ABL Properties

A comprehensive VS Code extension for managing OpenEdge/ABL project configurations directly from the editor. This extension provides a centralized properties panel where you can:

  • Manage database connections with a visual grid interface - add, edit, delete, and configure databases with server settings, ports, and runtime parameters
  • Autostart databases when VS Code opens and automatically stop them when it closes
  • Configure the PROPATH (buildPath) with drag-and-drop reordering and file watchers for external changes
  • Edit project settings from openedge-project.json including version, charset, working directory, and runtime options
  • Generate schema files automatically by dumping database definitions to .df files
  • Sync with openedge-project.json to keep database settings in sync with your ABL Language Server configuration

The extension integrates seamlessly with the ABL extension and uses your configured DLC runtimes to start/stop databases and perform schema dumps.

Features

Database Management

  • Database Configuration Grid: View and manage all project databases in a tabular format

    • Name, Path, Logical Name, Server, Port, Parameters, Autostart, and DLC columns
    • Add, Edit, and Delete operations via intuitive modal dialogs
    • Browse button for selecting database files
  • Automatic Database Startup: Databases configured with "Autostart" are automatically started when VS Code opens

    • Checks if database is already running before attempting to start
    • Uses proutil -C holder to detect database status
    • Supports both single-user (exit code 14) and multi-user (exit code 16) modes
    • Automatic shutdown when VS Code closes: Databases are gracefully stopped using _mprshut -by
  • Database Lifecycle Control:

    • Start databases using _mprosrv with configurable server, port, and parameters
    • Stop databases using _mproshut -by
    • Restart all databases with a single click
    • Automatic restart when database settings are updated

General Settings Tab

  • Project Configuration: Edit openedge-project.json settings directly
    • Project Name and Version
    • OpenEdge Version (dropdown from configured runtimes)
    • Graphical Mode toggle (prowin32 vs _progres)
    • Charset configuration
    • Working Directory and Number of Threads
    • Extra Parameters for runtime

Propath Configuration Tab

  • BuildPath Management: View and edit buildPath entries from openedge-project.json
    • Grid view with Type, Path, Build, and Xref columns
    • Add, Edit, and Delete buildPath entries
    • Reorder entries using Up/Down buttons
    • File watcher detects external changes with reload prompt

DLC Runtime Integration

  • DLC dropdown populated from abl.configuration.runtimes settings
  • Automatically sets up environment variables (DLC, PROPATH, PATH) for database operations
  • ABL Language Server automatically restarts after saving changes

Database Connection Sync

  • Database configurations sync with dbConnections in openedge-project.json
  • Supports aliases array and schema file per database

Automatic Schema Dump

  • Automatically dump database schema to .df files when configured
  • Schema files are generated at extension startup for databases with schemaFile defined
  • Schema is re-dumped when database settings are added or updated
  • Uses prodict/dump_df.p via a wrapper procedure for reliable parameter handling
  • Generate Schema Flag: Control automatic schema generation per database
    • Unchecked by default for new databases
    • Auto-fills schema path when checked (../.vscode/.schema/<dbname>.df)
  • Ensures database is running before attempting schema dump

Context Menu Integration

  • Explorer Context Menu: Right-click on project folders to access "OpenEdge Properties"
  • View Title Button: Quick access button in the Explorer view title bar (single-folder workspaces)
  • Smart Visibility: Menu items only appear for projects containing openedge-project.json

Output Logging

  • Dedicated "OpenEdge ABL Properties" output channel
  • Debug Mode: Enable verbose logging via openedge-abl-properties.debugMode setting
    • When disabled (default): Only essential messages (errors, start/stop confirmations)
    • When enabled: Detailed logging of all operations for troubleshooting
  • Helpful for troubleshooting startup and connection issues

Requirements

  • Visual Studio Code 1.85.0 or higher
  • OpenEdge installation with DLC configured
  • ABL extension with runtimes configured in abl.configuration.runtimes

Installation

  1. Install the extension from the VS Code Marketplace (or install the .vsix file manually)
  2. Configure your OpenEdge runtimes in VS Code settings:
{
  "abl.configuration.runtimes": [
    {
      "name": "12.8",
      "path": "C:/Progress/OpenEdge128"
    },
    {
      "name": "12.2",
      "path": "C:/Progress/OpenEdge122"
    }
  ]
}

Usage

Opening the Properties Panel

  1. Open a workspace containing an ABL project with an openedge-project.json file
  2. Right-click on the project folder in the Explorer → Select "OpenEdge Properties"
    • Or click the gear icon in the Explorer view title bar (single-folder workspaces)

Managing Databases

  1. In the Properties panel, go to the Databases tab
  2. Click the + button to add a new database
  3. Fill in the database details:
    • Name: Display name for the database
    • Path: Full path to the database file (use browse icon to select)
    • Logical Name: Logical name used in ABL code
    • Server: Hostname for network access (optional)
    • Port: Port number for network access (optional)
    • Parameters: Additional _mprosrv parameters (optional)
    • Autostart: Check to start database automatically when VS Code opens
    • DLC: Select the OpenEdge runtime to use
  4. Click Save to add the database
  5. Click OK to save all changes to openedge-databases.json

Restarting Databases

  • Click the restart icon (circular arrows) to restart all configured databases
  • Databases are automatically restarted when their settings are modified

Configuration Files

openedge-project.json

This file must exist in the project root for the extension to recognize the folder as an OpenEdge project.

openedge-databases.json

Created by this extension to store database configurations:

{
  "databases": [
    {
      "name": "Sports",
      "path": "C:/databases/sports.db",
      "logicalName": "sports",
      "server": "localhost",
      "port": "3000",
      "parameters": "-B 1000 -spin 10000",
      "autostart": true,
      "dlc": "12.8"
    }
  ]
}

OpenEdge Commands Used

Command Purpose
_mprosrv Start database server
_mproshut -by Stop database server
proutil -C holder Check database status
prodict/dump_df.p Dump database schema to .df file

Database Status Return Codes

Exit Code Meaning
0 Database not in use
14 Database locked by single user, PROUTIL, or RFUTIL
16 Database open in multi-user mode

Known Issues

  • The General Settings and Propath tabs are placeholders for future functionality

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests on the GitHub repository.

License

This extension is licensed under the MIT License.

Release Notes

See CHANGELOG.md for detailed release notes.

Requirements

  • VS Code 1.85.0 or higher
  • An OpenEdge project with an openedge-project.json file in the project root

Development

Building

npm install
npm run compile

Running in Development

  1. Open this folder in VS Code
  2. Press F5 to launch a new VS Code window with the extension loaded
  3. Open a folder containing openedge-project.json
  4. Right-click on the folder and select "Properties"

Linting

npm run lint

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft