FAQs

Modernize Your Legacy Code: COBOL, FORTRAN, PASCAL, BASIC, C

Discover Sector7's automated tools (VX/COBOL, VX/FORTRAN, VX/PASCAL, VX/BASIC, VX/C) for migrating OpenVMS applications to modern, maintainable code on Linux.

Automated Language Conversion

Our VX/Tools suite automatically converts your OpenVMS languages to their ANSI or C/C++ equivalents, ensuring 100% functional preservation with minimal manual effort.

What is the percentage of translation for OpenVMS COBOL to NetCOBOL, for example?

VX/COBOL translates OpenVMS COBOL to ANSI COBOL automatically, with no manual code changes. What is more important is that there are no fixes required, post-translation.

How long does it take to automatically convert 5 million lines of OpenVMS COBOL to ANSI COBOL?

The translation is done on Linux at compile time and is automatic. The time depends on the size and complexity of the application, so we give you an estimate for your own code as part of the assessment process.

How do you test the translated code?

Immediately after the translation is performed, the translated code is compiled on Linux using Fujitsu NetCOBOL or Micro Focus COBOL. These Linux-based compilers are really fast. Testing then follows a test plan agreed with you: see the value of testing in a migration project.

What is VX/COBOL and how does it help businesses?

VX/COBOL is a comprehensive solution designed to migrate OpenVMS COBOL applications to modern, flexible Linux-based systems. It is a source-to-source translator: it reads VMS and OpenVMS COBOL and emits standard ANSI COBOL, which Fujitsu NetCOBOL or Micro Focus COBOL then builds on x86 Linux. Your valuable, time-tested business logic is retained without rewriting code from scratch, and the original program logic and structure are preserved.

To discover how we can help you, please contact us.

Does VX/COBOL require rewriting our existing COBOL code?

No. VX/COBOL is a source-to-source translator that does the conversion automatically, so teams do not rewrite their COBOL by hand. It reads OpenVMS COBOL and emits standard ANSI COBOL that Fujitsu NetCOBOL or Micro Focus then compiles on Linux.

What kind of testing support does VX/COBOL provide?

VX/COBOL emits standard COBOL, so the translated application is built, debugged and profiled with the ordinary Fujitsu NetCOBOL or Micro Focus COBOL toolchains on Linux. Testing is how we confirm functional equivalence: we validate the OpenVMS baseline, then run the same test plan against the migrated application before it goes live.

To learn more about our testing methodologies, read the value of testing in a migration project or contact us.

Our OpenVMS COBOL application uses embedded Rdb SQL statements, not Oracle. Is that a problem?

No. Embedded Rdb SQL in COBOL is handled by SQL$PRE – COBOL, our replacement for the Rdb embedded-SQL precompiler. The COBOL does not change; underneath, the database becomes PostgreSQL (or another supported database), with Oracle reached through SQL Relay. At the end of the transformation, the COBOL application on Linux accesses PostgreSQL/Oracle instead of Rdb.

What is VX/PASCAL and how does it help with OpenVMS Pascal migration?

VX/PASCAL is an automated transpiler that converts OpenVMS Pascal to ANSI-compliant C++ for execution on Linux. It carries VMS-specific extensions, CDD data structures, and RMS file handling across to Linux, so the translated program behaves the same as it did on OpenVMS. To explore VX/PASCAL for your migration, contact us.

How does the VX/PASCAL migration process work technically?

VX/PASCAL automates migration in four steps: source code analysis, transpile to C++, compile with GNU C++, and validate with automated testing to ensure identical behavior.

What customization options are available in VX/PASCAL?

VX/PASCAL is driven by a setup table read from a customer setup file, so output can be tuned to house conventions without editing source. Variable naming, code formatting (braces, indentation and line breaks), VMS logical-name translation, POSIX error-code mapping and inherited system-file handling are all controllable, and runtime checks (case, array bounds, nil pointers, allocation and file state) can be enabled together for a validation build.

What are the key benefits and proven results of using VX/PASCAL?

VX/PASCAL translates OpenVMS and VAX Pascal to ANSI C++ automatically, with zero code freeze: teams keep developing in Pascal while each release is migrated. Any construct the translator cannot fully represent is named with a numbered diagnostic rather than dropped. Contact us to discuss your requirements.

What is VX/FORTRAN and how does it help with OpenVMS migration?

VX/FORTRAN is an automated migration tool that translates OpenVMS FORTRAN to ANSI-compliant FORTRAN (Intel Fortran) for execution on Linux. It extends Fortran Partner (FPT) with VMS-specific features, standards adherence, and performance optimizations.

It is designed for scientific and engineering FORTRAN estates, so decades of software investment move forward intact. To learn more about how VX/FORTRAN can modernize your legacy systems, contact our migration experts.

How does the VX/FORTRAN migration workflow operate?

The migration follows four automated steps: source code analysis to identify VMS-specific extensions and dependencies, transpilation to ANSI-standard Fortran, compilation with Intel Fortran optimization, and validation through automated testing to verify identical execution behavior.

Can I continue development during the migration process?

Yes, VX/FORTRAN supports zero code freeze, allowing you to continue development on VMS while migrating to Linux. This parallel approach ensures business continuity throughout the modernization process.

Organizations like Amprion GmbH have successfully used this approach for large-scale FORTRAN migrations involving millions of lines of code.

Does VX/FORTRAN provide code optimization capabilities?

VX/FORTRAN performs advanced optimizations including loop unrolling, inline expansion, and memory access optimizations.

How does VX/FORTRAN handle embedded SQL conversion?

VX/FORTRAN automatically converts Pro*Fortran SQL statements to external C functions, ensuring seamless database integration on the target Linux platform without manual intervention.

What quality assurance and testing capabilities does VX/FORTRAN provide?

Before any rewrite, VX/FORTRAN's source code analysis identifies VMS-specific extensions and RMS file dependencies and reports missing sub-programs and mismatched arguments. After translation, the Intel FORTRAN compiler builds the emitted source and automated test cases confirm identical execution behaviour. For detailed information about our testing methodologies and quality assurance processes, read about testing in a migration project or contact our team.

What is VX/C and how does it help with OpenVMS C migration?

VX/C is Sector7's automated tool that converts VMS/OpenVMS C source code into portable, POSIX-compliant ANSI C. It identifies, flags, and corrects VMS-specific issues to ensure your code runs seamlessly on Linux environments.

The tool provides fully automated source code conversion, works with existing Makefiles and build systems, and handles VMS-specific syntax and dependencies. For organizations looking to modernize their legacy systems, contact us to discuss your migration requirements.

What VMS-specific issues does VX/C automatically detect and fix?

VX/C identifies and resolves 14 categories of VMS-specific issues including addressing constants, variant struct/union usage, missing function arguments, VMS-specific compiler calls, and POSIX type incompatibilities.

How does VX/C handle VMS include files and logical names?

VX/C automatically handles VMS-specific include file references, logical name includes, and case sensitivity issues in include paths, ensuring proper POSIX compliance in the migrated code.

What is the typical workflow for using VX/C?

VX/C functions like a C compiler, parsing source files and generating formatted reports, fix scripts, and POSIX-compliant source code through a simple command-line interface.

Can VX/C fix function prototype issues automatically?

Yes, VX/C automatically corrects missing function arguments, undefined return types, and inconsistent function naming cases. It converts VMS-specific function calls to their POSIX-compliant equivalents and fixes typecasting issues on assignment operations.

What are the main benefits of using VX/C for legacy migration projects?

VX/C is an automated source-to-source translator that reduces manual effort and gives consistent code output across large codebases. Every machine-applied edit is annotated inline with a /*S7-nnn*/ comment, so each change stays traceable and reviewable, and it works with existing Makefiles and build systems and fits continuous-integration workflows.

The result is portable, POSIX-compliant ANSI C that compiles cleanly off OpenVMS on Linux and macOS. To learn more about how VX/C can accelerate your migration project, contact our migration experts.

What is VX/BASIC and how does it help with legacy system migration?

VX/BASIC is a full-featured OpenVMS BASIC to ANSI C transpiler that enables legacy BASIC applications to run natively on Linux. It converts VMS BASIC syntax to working C code (the graphics command family is the one documented exclusion) while maintaining the original structure, variable names, and comments for easy maintenance.

For organizations ready to modernize their legacy systems, contact us to discuss your specific migration requirements.

How many VMS system service calls does VX/BASIC support?

VX/BASIC programs that call OpenVMS system routines are backed by the VX/RT runtime libraries, which replicate over 900 OpenVMS system service and run-time calls, including RMS file handling and other system services.

What makes VX/BASIC different from rewriting applications from scratch?

VX/BASIC maintains the original BASIC source code structure while generating readable ANSI C code, allowing developers to continue working with familiar BASIC syntax. The transpiled C code retains the original program flow and variable names, making debugging and maintenance much easier than completely rewritten applications.

What are the key benefits of using VX/BASIC for migration?

VX/BASIC converts VMS BASIC to ANSI C that keeps VAX BASIC semantics, with the graphics command family the one documented exclusion. Organizations retain their valuable software investments while moving to modern, portable infrastructure.

The generated ANSI C is built with the host's own toolchain, so it can be maintained, built and debugged with standard modern tools.

Ready to explore migration options for your BASIC applications? Contact us to discuss your specific requirements.

What does VX/C convert, and what does it produce?

VX/C takes OpenVMS/VAX-C and DEC C source and produces portable, POSIX-compliant ANSI C. It identifies, flags, and corrects VMS-specific issues so the generated code targets Linux and other POSIX/UNIX platforms such as macOS.

How is VX/C invoked?

VX/C works like a C compiler. You run the vxcpp command with a list of switches (for example --include=, --vms-api=lower, --output=) and one or more C source files. It also reads mapping files (--hmapfile=, --vararg_file=) so common option sets and header remaps do not have to be retyped on every run.

What kinds of VMS-specific C issues does VX/C detect?

VX/C covers 14 feature-coded categories, including addressing constants and strings, variant struct and union usage, union-to-union assignment, several #include problems (text-library includes, logical-name references, case sensitivity), missing function arguments, type mismatches, inconsistent function-naming cases, VMS-specific compiler calls such as vax$errno, incompatible POSIX type usage, undefined return types, and left-hand-side typecasting.

Does VX/C change my code automatically, or just report problems?

Both. It rewrites the source into POSIX-compliant ANSI C and marks every edit inline with a traceable /*S7-nnn*/ annotation (for example /*S7-041*/ where it padded a system-service call's arguments), and it writes diagnostics for anything it cannot handle to standard error.

How does VX/C make its changes traceable?

Every transformation is tagged in the output with a /*S7-nnn*/ comment that identifies the rule applied, so a reviewer can diff the migrated source against the original and see exactly what the tool did and why. The annotations can be suppressed with --no-s7-tags when they are no longer needed.

How does VX/C handle VMS #include and logical-name references?

It addresses #include directives that pull from a text library without delimiters, #include references via VMS logical names, and case-sensitivity differences in #include paths. It also remaps VMS header names to their POSIX equivalents (for example stat.h to sys/stat.h, in.h to netinet/in.h) using a built-in table plus any user-supplied maps.

Does VX/C fit into an existing build and CI setup?

Yes. It works with existing Makefiles and build systems and supports continuous-integration workflows. It is typically driven by a batch script that runs vxcpp over a source tree, using --copy= for directory-tree mode, and then compiles the transformed output.

Which platforms does VX/C target?

VX/C produces code for Linux and other POSIX/UNIX platforms such as macOS. It ships target personalities that load the correct predefined macros for each host (GCC on Linux, Apple LLVM/clang on macOS). There is no Windows target.

What does VX/BASIC produce, an interpreter or C source?

It translates VMS and OpenVMS BASIC into ANSI C source and then compiles that C. C is used as an intermediate language, which is what gives the output long-term portability and lets it build, run, and be debugged directly on modern systems with standard tools.

Which platforms can the converted application run on?

VX/BASIC converts OpenVMS BASIC into C that compiles and runs on Linux and Windows, while still allowing the application to be maintained in its original OpenVMS BASIC form and re-translated on each release.

Which VMS BASIC data types are supported, and how do they map to C?

All VMS and OpenVMS BASIC data types are supported. Integer types map to fixed-width C types (BYTE to int8_t, WORD to int16_t, LONG to int32_t, QUAD to int64_t), SINGLE and DOUBLE map to float and double, DECIMAL maps to a packed decimal type, and STRING maps to a VMS string descriptor. GFLOAT and HFLOAT are converted to double.

Are strings handled the same way as under VMS BASIC?

Yes. VX/BASIC keeps both dynamic and fixed-length string handling and uses VMS string descriptors for STRING data, so migrated code stays compatible with VMS BASIC string memory management.

Will my error-handling logic still work after conversion?

VX/BASIC preserves VMS error codes and the ON ERROR handling model, so programs behave the same as they did on OpenVMS, including RMS errors such as the file-not-found condition. Return-value checks on system routines are backed by the VX/RT runtime libraries, and ERR, ERL, ERT$, RMSSTATUS, and VMSSTATUS are all available for introspection.

How are VMS BASIC records and maps converted?

VX/BASIC fully translates RECORD and MAP declarations into C. A RECORD becomes a typedef'd struct, a VARIANT becomes a union with one struct per CASE, and several MAP declarations that name the same storage become parallel structs bound to one backing block, preserving the exact VAX BASIC byte layout.

Which BASIC statements and I/O operations are covered?

All VMS BASIC statements except the graphics family are supported, including IF...THEN, FOR...NEXT, WHILE, SELECT CASE, GOTO, and ON ERROR GOTO. Terminal I/O such as PRINT, INPUT, and LINPUT is covered, and RMS file I/O supports sequential, relative, indexed, and virtual organizations.

Are there any limitations, for example graphics?

The one documented exclusion is the graphics command family, which is recognised but not translated. GFLOAT and HFLOAT are converted to double rather than preserved exactly (HFLOAT loses precision), and a few OpenVMS-specific options such as OPTION ANGLE are out of scope. Everything else in the core language is supported.

What does VX/COBOL convert, and where does the result run?

VX/COBOL automatically converts VMS and OpenVMS COBOL to ANSI-compliant COBOL so the application runs on x86 Linux with no manual code changes. The converted code targets the Fujitsu NetCOBOL and Micro Focus COBOL compilers, and the original COBOL logic and structure are preserved.

How does VX/COBOL handle OpenVMS pointers initialized by reference?

VMS and OpenVMS can initialize a pointer by reference, which ANSI COBOL does not allow. VX/COBOL changes the initialization to a null value and generates a MOVE FUNCTION ADDR statement in an init section, so the pointer is set up correctly in the PROCEDURE DIVISION without any manual editing.

How are CALL statements changed during migration?

VX/COBOL replaces GIVING with RETURNING, converts each OMITTED argument to BY VALUE 0, and for known item-list system services renames the callee to its COB$ runtime counterpart. All of this is automatic, so the calling code does not need manual editing.

Can we keep developing in OpenVMS COBOL while the migration is underway?

Yes. VX/COBOL is built for continuous integration: you keep developing in VMS and OpenVMS COBOL, and each release is migrated to Linux automatically, so there is no code freeze and full functionality is preserved across the estate.

How are RMS file operations supported after migration to Linux?

VX/COBOL routes file operations through VX/RMS, so RMS file handling carries over to Linux. Programs keep their VMS file organizations, access modes, record formats, and locking behaviour, and per-file RMS status is preserved for the status special registers.

Does VX/COBOL account for 32-bit and 64-bit architecture differences?

Yes. As part of targeting Linux, VX/COBOL adjusts for 32-bit and 64-bit architecture differences, widening descriptors and converting stored pointers where needed, so the migrated application behaves correctly on x86 Linux.

How is OpenVMS file locking (APPLY LOCK-HOLDING) migrated?

VX/COBOL drops the OpenVMS APPLY LOCK-HOLDING clause from I-O-CONTROL and instead adds LOCK MODE IS AUTOMATIC to the affected file's SELECT in FILE-CONTROL, so record-locking behavior carries over without manual rework.

What does VX/FORTRAN convert, and what does it produce?

It translates OpenVMS and VAX FORTRAN into ANSI-compliant FORTRAN (Intel FORTRAN) that runs on x86 Linux and Windows. It is built on the Fortran Partner (fpt) transpiler and adds VMS-specific handling, standards adherence, and performance optimizations, so decades of FORTRAN investment move forward without manual code modifications.

What are the stages of the VX/FORTRAN migration workflow?

Source code analysis identifies VMS-specific extensions, RMS file dependencies, and embedded Pro*FORTRAN SQL. Transpilation converts VMS extensions to ANSI-standard FORTRAN. Optimization tunes the emitted source with inline expansion and loop unrolling for Intel FORTRAN. Finally, compile and validate builds the source and runs automated test cases to confirm identical execution behaviour.

How does VX/FORTRAN migrate VMS file handling?

VMS file specifications are translated to host paths at run time, so standard OPEN statements keep working. Keyed and indexed (ISAM) files, along with the REWRITE, DELETE, and UNLOCK record operations, are routed to the VX/RMS runtime, which replaces obsolete ISAM handling with modern FORTRAN record I/O while preserving key structure and record locking.

What happens to embedded Pro*FORTRAN SQL during migration?

VX/FORTRAN automatically converts Pro*FORTRAN SQL statements into external C functions, so database access keeps working on the target platform without hand-rewriting the embedded SQL.

Does the migrated code run faster, and where does any speed-up come from?

VX/FORTRAN applies optimizations during migration: inline expansion of subroutines and statement functions to remove call overhead, loop unrolling, and memory-access optimizations. The gain depends on the application.

What kinds of code-quality problems does the static analysis catch?

Advanced static analysis flags syntax, logical, and performance issues before migration. A representative report shows missing subroutine declarations (which would stop compilation), inconsistent argument types (which could cause runtime crashes), and unsafe integer-to-real conversions (which could lose precision). It also flags keywords used as variable names and uninitialised variables.

Can we keep developing on OpenVMS while the migration is underway?

Yes. VX/FORTRAN supports zero code freeze. You continue development on OpenVMS while each release is migrated to Linux and Windows in parallel, so the migration does not stall ongoing work.

Does VX/FORTRAN require manual code changes, and can it protect our source?

No. The migration is fully automated, with no manual code changes. VX/FORTRAN rewrites VMS extensions to standard FORTRAN, and the analysis stage reports missing sub-programs and mismatched arguments before any rewrite.

What does VX/PASCAL convert, and what does it produce?

It is an automated source-to-source translator that converts OpenVMS and VAX Pascal into ANSI-compliant C++, which then compiles, links, and runs on x86 Linux and Windows. It targets readable, maintainable C++ rather than opaque machine-generated output.

Does VX/PASCAL support VMS-specific Pascal extensions, or only standard Pascal?

It supports VMS-specific extensions, including VMS stack operations, string descriptors, CDD data structures, and RMS file handling: the constructs a generic Pascal compiler would not understand, so it preserves compatibility with the original application.

How does VX/PASCAL handle VMS stack argument tracking (PRESENT and not present)?

Linux and Windows do not natively carry the VMS notion of an optional argument being present or absent. VX/PASCAL preserves the PRESENT and not-present semantics in the emitted C++ and its runtime, so optional-argument handling behaves as it did on OpenVMS.

Do I have to freeze development while migrating with VX/PASCAL?

No. VX/PASCAL is built for continuous migration: you can keep developing in OpenVMS Pascal while each release is migrated, with source kept synchronized between the Pascal and C++ versions and builds carried across through converted MMS and command files.

How are OpenVMS Pascal string operations translated to C++?

VARYING and packed string types become runtime string class templates that keep VMS length and padding semantics, and VMS string routines such as STR$CONCAT and STR$COPY are handled through the STR$ runtime and C++ operator overloading.

What RMS file operations are supported after migration?

Through the VX/RMS runtime, the generated code supports indexed, relative, sequential, and block files, plus keyed access, RFA access, and record locking, so file behavior carries over without a data conversion step.

How does VX/PASCAL keep the CDD data structures from my Pascal application?

It integrates with VX/CDD to retain Common Data Dictionary record definitions during conversion, so CDD-defined data types and references carry through into the translated C++.

How does VX/PASCAL verify the translated program behaves the same as the original?

The migration process ends with an execute-and-validate step that runs automated test cases to confirm identical behavior between the original VMS Pascal and the translated C++, and any construct the translator cannot represent is named with a numbered diagnostic rather than dropped.

Message Us
Email us with your queries and a team member will get back to you ASAP.
Call Us
Want to chat? Give us a call and we’ll answer all your questions.
Location
Prefer to visit? Sector7 is based in Austin, Texas.

Transform Your Legacy Software Today!

Get In Touch
Unlock the potential of your legacy software with our expert migration services.