On Apr 17, 2026, at 3:32 PM, Eric Karmark <ekar...@gmail.com> wrote:
Veteran MV dev here looking to have a nostalgic tinker with MV systems - I've loaded up the latest eval version of jBASE on Windows 11, created a BP file as UD type and have done many rounds of working with Gemini and CoPilot on trying to solve an error in compiling programs as I keep getting the error below:
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+un...@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
---
You received this message because you are subscribed to the Google Groups "Pick and MultiValue Databases" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mvdbms+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/mvdbms/101e150a-68d9-43bb-86a1-fecf0e96eb8dn%40googlegroups.com.
Feels like either something is missing from the C compiler setup or something got botched when this release was built (Like the C++ build tools were present on the developers machine who built the release) and now it’s expecting something to be there, like link.
This doesn’t seem right and RUN does work (I use it on Linux). I just don’t do much work on Windows. As you say, RUN is archaic but it does have a place in legacy code. I’ll pass this along to our support department for a deeper dive but you should also open a support case.
If you just want it to work, you can write your own wrapper called RUN and put it in path ahead of jBASE’s RUN. The wrapper would just toss away the RUN and the FILENAME and just CHAIN the program.
The support guys hate it when standard commands are wrapped, so you need to be careful and own it when you wrap.
-BD
To view this discussion visit https://groups.google.com/d/msgid/mvdbms/71eed143-a2f1-4956-b37c-f3e711b8336bn%40googlegroups.com.
In earlier versions of jBASE, BASIC was more of a "suggestion" to compile, but in 6.2, the move toward JIT (Just-In-Time) compilation and the JELF standard became much more aggressive.
Here is the technical breakdown of how that change specifically screwed you on Windows but played nice on Linux:
1. The Death of the "Intermediate" ObjectIn older versions, BASIC produced an .obj file, and CATALOG produced a .dll. In 6.2, jBASE tries to streamline this by using a high-performance JELF loader.
On Windows: This new loader is incredibly picky. It expects the binary to have a specific "jBASE-ready" signature. If the Windows compiler (MSVC) isn't called with the exact flags jBASE 6.2 expects, it produces a standard DLL. The 6.2 RUN command sees that standard DLL, realizes it's missing the 6.2-specific JELF metadata, and refuses to run it.
On Linux: The ELF format used by Ubuntu is much closer to what the JELF loader wants. The 6.2 engine on Linux can "wrap" a gcc output almost instantly without the metadata conflicts you hit on Windows.
jBASE 6.2 introduced a change in how it looks for code. If it doesn't see a perfectly cataloged JELF-status binary, it tries to "auto-catalog" or look for an intermediate record (the ones prefixed with $).
On Windows, this search logic often gets stuck in a loop. It finds the .dll, sees it's not "JELF enough," then looks for the $PROG record, which might be corrupt or missing because of that Maxtor drive.
This is why you were seeing the error: Unable to find JELF status on file $TEST. The 6.2 engine was essentially saying, "I found the file, but I don't recognize the 6.2-style signature in the header."
Starting with the later 6.x builds, jBASE tried to move toward more "embedded" compilation logic to reduce the reliance on external paths.
On your Ubuntu VM, the integration with gcc is baked into the 6.2 installer much more cleanly.
On Windows, it still relies on that external "handshake" with Visual Studio. If that handshake isn't 100% perfect (which it wasn't for us), the 6.2 RUN command simply won't trust the resulting binary.
The "TL;DR" of 6.2: Version 6.2 raised the bar for what it considers a "valid executable." Windows makes it hard to clear that bar; Linux clears it by default.