My admin folks have encountered a big problem, and I’m relaying their plight to SO:
We have a legacy database application (written in Progress 4GL/OpenEdge) that invokes WordPerfect X3 in order to generate a report. The path to the WordPerfect executable is hard-coded within the database app, as well as the location of scanned PDFs that are to be inserted into the database, and we have no way to modify the program.
Most of our workstations have been successfully migrated from WinXP to Win7, and the legacy application works fine UNTIL it tries to invoke WordPerfect, saying it can’t find the executable (even with X3 installed in the exact same path used on WinXP) … same with the scanned document folder.
Any suggestions?
UPDATE:
I spent this morning helping my admin folks with the various suggestions you all provided … we checked file permissions, looked at the compiled (.r) files with a Hex Editor (thanks @Tom and @Ernest), and did a search in files inside all source code (.p) with Notepad++.
Here’s what I found: the program is NOT invoking WordPerfect directly (as I was originally informed), but instead is using DDE. Here’s the error message that Progress 4GL produces:

I am aware that there are issues with DDE and Win7, so I was wondering if there’s a work-around, maybe registry keys that need to be modified or something to that affect.
I’m including an excerpt from the source code below, hoping that somebody recognizes what’s going on (I’m NOT familiar with Progress 4GL, so it’s all greek to me):
/* setup DDE communicaiton with WordPerfect 12 */
/* and perform the merge of the various document */
DEFINE VARIABLE sys AS INTEGER NO-UNDO.
DEFINE VARIABLE mline AS CHAR FORMAT "x(220)" NO-UNDO.
DEFINE VARIABLE intResult AS INTEGER NO-UNDO.
DEFINE VARIABLE err-status AS INTEGER.
{GLOBVAR.I}
DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO.
DEFINE FRAME FRAME-b
WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
SIDE-LABELS NO-UNDERLINE THREE-D
AT COL 13 ROW 4.1
SIZE 11 BY 2
TITLE "FRAMEWP".
IF SESSION:DISPLAY-TYPE = "GUI":U THEN
CREATE WINDOW C-Win ASSIGN
HIDDEN = YES
HEIGHT = 4
WIDTH = 20
MAX-HEIGHT = 4
MAX-WIDTH = 20
VIRTUAL-HEIGHT = 4
VIRTUAL-WIDTH = 20
RESIZE = yes
SCROLL-BARS = no
STATUS-AREA = no
BGCOLOR = ?
FGCOLOR = ?
KEEP-FRAME-Z-ORDER = yes
THREE-D = yes
MESSAGE-AREA = no
SENSITIVE = YES.
IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win)
THEN C-Win:HIDDEN = NO.
VIEW FRAME DEFAULT-FRAME IN WINDOW C-Win.
VIEW FRAME FRAME-b IN WINDOW C-Win.
C-Win.
ENABLE ALL WITH FRAME FRAME-B TITLE "".
ASSIGN FRAME FRAME-B:VISIBLE = FALSE.
OS-DELETE VALUE(pass-txtout).
PAUSE 1 NO-MESSAGE IN WINDOW c-win.
OS-DELETE VALUE(pass-mergedoc).
pass-shelldoc = '"' + trim(pass-shelldoc) + '"'.
pass-shelldoc = TRIM(pass-shelldoc).
pass-txtfile = '"' + TRIM(pass-txtfile) + '"'.
pass-txtfile = TRIM(pass-txtfile).
pass-txtout = '"' + TRIM(pass-txtout) + '"'.
pass-txtout = TRIM(pass-txtout).
pass-mergedoc = '"' + TRIM(pass-mergedoc) + '"'.
pass-mergedoc = TRIM(pass-mergedoc).
DDE INITIATE sys FRAME FRAME FRAME-B:HANDLE APPLICATION "wpwin13_macros" TOPIC "COMMANDS".
/* create a wp doc from the pass-txtfile just created */
mline = "Application (WordPerfect; " + '"WordPerfect"' + '; Default!; "EN")'.
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "FileNew ()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetFileName (Filename: " + pass-txtfile + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetSource (SourceType: ASCII!)".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetDestination (DestinationType: MergeData!)".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetSizeToFit (State: No!)".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetAsciiFieldDelimiter (FieldDelimiter: " + '"^"' + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetAsciiRecordDelimiter (RecordDelimiter: " + '"%"' + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetAsciiStrip (StripChars: " + '""' + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportSetAsciiEncap (EncapsulationChar: " + '"""' + '""' + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "ImportDoImport ()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "WAIT(10)".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "FileSave (Filename: " + pass-txtout + "; ExportType: WordPerfect_6_7_8!; yes!)".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "Close()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
/* perform the merge using sheldoc, pass-txtout and pass-shelldoc */
mline = "Application (WordPerfect; " + '"WordPerfect"' + '; Default!; "EN")'.
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "MergeRUN(Formfile!;" + pass-shelldoc + ";DataFile!;".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = mline + pass-txtout + ";TOFILE!;" + pass-mergedoc + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "CLOSE()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
IF substring(pass-mergedoc,16,3) = "D12" THEN.
ELSE
DO:
mline = "FileOpen (Filename: " + pass-mergedoc + ")".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "AppMaximize ()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
mline = "APPRESTORE ()".
mline = TRIM(mline).
DDE EXECUTE sys COMMAND mline.
END.
DDE TERMINATE sys NO-ERROR.
:
:
I agree that it sounds a lot like a permissions problem.
None the less… are you sure that you have no way to modify it? That isn’t the sort of functionality that would typically be delivered by a vendor — it sounds more like a custom modification.
Do you have .p or .w files hanging around? (These are Progress 4GL source code.) Or only .r files? (This is the compiled code.)
Run “showcfg” (the “config” icon on the start menu) — if you have development licenses it may be more a case of not knowing how to change it than not having the ability to change it.