Execute ABL code
- Last Updated: December 23, 2025
- 4 minute read
- OpenEdge
- Version 12.8
- Documentation
Now that you have configured your OpenEdge project and set up the Windsurf development
environment, you are ready to execute ABL procedures efficiently. This topic introduces
multiple ways to run your code, from simple keyboard shortcuts to automated task
configurations, so you can test, debug, and deploy with ease. Whether you are launching
teletypewriter (TTY)-based applications using _progres.exe or graphical
user interface (GUI)-based applications with prowin.exe, Windsurf
provides flexible options to streamline execution. You also learn how to bind custom
shortcuts, define reusable task files, and manage startup parameters for real-world
scenarios.
Use keyboard shortcuts
| Shortcut | Action |
|---|---|
F2 |
Runs the current procedure using _progres
-b. Utilizes the configured PROPATH
and database connections. |
Ctrl+Shift+P → ABL: Run with
prowin |
Executes the procedure using prowin.exe.
|
prowin.exe execution to the F2
key:- Open File → Preferences → Keybinding Shortcuts or select the Configure Keybinding icon.
- Delete the existing
F2binding and assign it to ABL: Run with prowin.
Automate ABL code execution with external tasks
Windsurf supports external task definitions stored as JSON files to automate the launching of both TTY-based and GUI-based OpenEdge applications directly from Windsurf. These tasks can be version-controlled and shared across teams.
TTY application startup task:
To run a TTY-based OpenEdge application using _progres.exe:
- Create a file named
.vscode/tasks.jsonin your project directory. This file defines how Windsurf should launch your OpenEdge application using specific parameters like:- Database connection:
-db,-H,-S - Procedure file to run:
-p test2.p - Environment variables:
DLC,PROPATH - Executable path:
_progres.exefor TTY,prowin.exefor GUI
- Database connection:
-
Define the TTY task configuration in tasks.json. Here is an example configuration:
{ "version": "2.0.0", "tasks": [ { "label": "My TTY Application", "type": "process", "command": "/path/to/nowhere", "args": [ "-basekey", "INI", "-ininame", "conf/empty.ini", "-db", "sports2020", "-H", "localhost", "-S", "12345", "-cpinternal", "1252", "-p", "test2.p" ], "windows": { "command": "C:\\Progress\\OpenEdge\\bin\\_progres.exe" }, "presentation": { "reveal": "silent", "panel": "new", "focus": true }, "options": { "env": { "DLC": "C:\\Progress\\OpenEdge", "PROPATH": "rcode,C:\\Progress\\OpenEdge\\tty\\netlib\\openedge.net.pl, C:\\Progress\\OpenEdge\\tty\\openedge.core.pl" } }, "problemMatcher": [] } ] }Note: This example assumes your workspace includes anaconfdirectory containing an empty INI file namedempty.ini. - Open a Proenv terminal in Windsurf and navigate to your database directory:
cd C:\Workspace\myProject\db - Start the database broker:The database broker starts on port
startDb.bat12345. - To update project configuration, remove the
-RO(read-only) option from the database connection inopenedge-project.json. Removing-ROallows the application to write to the database, which is required for tasks that modify data. After you have removed this option, restart the ABL language server to apply changes. - From the Terminal menu, select Run Task and
choose the configured task.
A new terminal opens with your
_progresapplication running.
Note: If you remove theQUITstatement fromtest2.p, executing the task launches the Procedure Editor, similar to running from the command line.
GUI application startup task
prowin.exe:- Create a file named
.vscode/tasks.jsonin your project directory. - Define the GUI task configuration in tasks.json. Here is an example
task configuration:
{ "label": "My GUI Application", "type": "process", "command": "/path/to/nowhere", "args": [ "-basekey", "INI", "-ininame", "conf/gui.ini", "-db", "sports2020", "-H", "localhost", "-S", "12345", "-cpinternal", "utf-8", "-p", "test2.p", "-nosplash" ], "windows": { "command": "C:\\Progress\\OpenEdge\\bin\\prowin.exe" }, "presentation": { "reveal": "silent", "panel": "new", "focus": true }, "options": { "env": { "DLC": "C:\\Progress\\OpenEdge" } }, "problemMatcher": [] }Note: This example assumes your workspace includes anHere is an example of the gui.ini file:aconfdirectory containing an INI file namedgui.ini.[Startup] V6Display=no DefaultFont=MS Sans Serif, size=8 DefaultFixedFont=Courier New, size=8 DLC=C:\Progress\OpenEdge Use-3D-Size=Yes PROPATH=rcode,C:\Progress\OpenEdge\tty\netlib\openedge.net.pl,C:\Progress\OpenEdge\tty\openedge.core.pl UseSourceEditor=yes [Colors] ;****************************************************************************** ; THE DEFINITION OF COLOR 0 THROUGH 15 IS PRIVATE TO THE PROGRESS ADE. ; MODIFYING COLORS 0 THROUGH 15 MAY PREVENT THE PROGRESS ADE FROM RUNNING. ; The following color definitions correspond to the ADE standards. ; 0 to 15 - reserved color0=0,0,0 color1=0,0,128 color2=0,128,0 color3=0,128,128 color4=128,0,0 color5=128,0,128 color6=128,128,0 color7=128,128,128 color8=192,192,192 color9=0,0,255 color10=0,255,0 color11=0,255,255 color12=255,0,0 color13=255,0,255 color14=255,255,0 color15=255,255,255 NORMAL=0,15 INPUT=15,0 MESSAGES=15,1 [Default Window] ;x= ;y= ;rows= ;columns= [fonts] ;****************************************************************************** ; THE DEFINITION OF FONT 0 THROUGH 7 IS PRIVATE TO THE PROGRESS ADE. ; MODIFYING FONTS 0 THROUGH 7 MAY PREVENT THE PROGRESS ADE FROM RUNNING. ; The following fonts definitions correspond to the ADE standards. ; ? - DefaultFont from Startup Section ; 0 - DefaultFixedFont from Startup Section (1 char per PPU) ; 1 - Proportional System -
Update the conf/gui.ini file to reflect the correct paths for
DLCandPROPATH. - From the Terminal menu, select Run
Task and choose the configured task.
A new terminal opens with your
prowinapplication running.
Ctrl + 1returns focus to the Editor view from the Output view.- Store task configurations in your code repository to share across teams.
- Refer to the full Windsurf documentation for advanced task setup and environment configuration.