Technical Capabilities
Having trouble finding what you need?
Get in touch with us, so we can answer your specific questions directly.
Get In Touch

VX/COBOL - OpenVMS COBOL to ANSI COBOL

Overview

VX/COBOL enables VMS / OpenVMS COBOL applications to run seamlessly on x86 Linux with zero manual modifications. It automatically converts legacy COBOL to ANSI-compliant COBOL, supporting Fujitsu and Micro Focus COBOL compilers.

Designed for continuous integration, VX/COBOL allows ongoing development in VMS / OpenVMS COBOL, while automatically migrating each release to Linux, ensuring 100% functionality.

Key Features

100% Automated COBOL Migration – No manual changes needed.

Continuous Integration Ready – Develop in VMS, deploy on Linux.

Preserves COBOL Logic – Original structure is maintained.

Fully Compatible with RMS – Uses VX/RMS for complete RMS file support.

Optimized for Linux – Adjusts for 32-bit vs. 64-bit architecture differences.

Supports Modern ANSI COBOL Standards – Converts VMS-specific syntax & semantics.

COBOL Migration: Key Differences & Solutions

Pointer Handling

VMS / OpenVMS initializes pointers by reference. ANSI COBOL does not allow this. VX/COBOL modifies the initialization to NULL and generates a MOVE statement in an init section.


VMS / OpenVMS COBOL Migrated ANSI COBOL
05 POINTER VALUE REFERENCE FILE_NAME. 05 ANON_POINTER_001 POINTER VALUE NULL.

**Inserted in PROCEDURE DIVISION:** PERFORM /s7/INIT THRU /s7/INIT_END.
MOVE FUNCTION ADDR(FILE_NAME) TO ANON_POINTER_001.

COMPUTE Statements

VX/COBOL adjusts floating-point precision issues by appending /s7/PREC to division operations.


VMS / OpenVMS COBOL Migrated ANSI COBOL
COMPUTE PCT_CNT ROUNDED = (SUB_CNT / TOT_CNT) * 100 COMPUTE PCT_CNT ROUNDED = (SUB_CNT / TOT_CNT) * 100 + /s7/PREC

**Constant Definition:**
77 /s7/PREC PIC 9V9(5) VALUE 0.

CALL Statement Changes

VX/COBOL replaces GIVING with RETURNING, adjusts OMITTED parameters to BY VALUE 0, and converts program names to lowercase for consistency.

VMS / OpenVMS COBOL
CALL "LIB$GETJPI" USING  
    BY REFERENCE GETJPI_ITEM_CODE  
    OMITTED  
    OMITTED  
    BY REFERENCE GETJPI_GROUP_NO  
    OMITTED  
    OMITTED  
GIVING RETURN_CODE.
Migrated ANSI COBOL
CALL "lib$getjpi" USING  
    BY REFERENCE GETJPI_ITEM_CODE  
    BY VALUE 0  
    BY VALUE 0  
    BY REFERENCE GETJPI_GROUP_NO  
    BY VALUE 0  
    BY VALUE 0  
RETURNING RETURN_CODE.

I-O Control and File Locking

VX/COBOL modifies the APPLY LOCK HOLDING statement to LOCK MODE IS AUTOMATIC.

VMS / OpenVMS COBOL
INPUT-OUTPUT SECTION.  
FILE-CONTROL.  
    SELECT OPTIONAL CUST_FILE ASSIGN TO CUST  
    ORGANIZATION IS INDEXED  
    ACCESS IS DYNAMIC  
    FILE STATUS IS FILE_STATUS_BYTE  
    RECORD KEY IS CUST_KEY  
    ALTERNATE RECORD KEY IS CUST_ALPHA_CODE.  

I-O-CONTROL.  
    APPLY LOCK HOLDING ON CUST_FILE.
Migrated ANSI COBOL
INPUT-OUTPUT SECTION.  
FILE-CONTROL.  
    SELECT OPTIONAL CUST_FILE ASSIGN TO "CUST,EXFH"  
    ORGANIZATION IS INDEXED  
    ACCESS IS DYNAMIC  
    FILE STATUS IS FILE_STATUS_BYTE  
    RECORD KEY IS CUST_KEY  
    ALTERNATE RECORD KEY IS CUST_ALPHA_CODE  
    LOCK MODE IS AUTOMATIC.

Why VX/COBOL?

Seamless Migration with 100% Automated Code Conversion

Preserves COBOL Development Workflow – Continue using VMS / OpenVMS COBOL

Full RMS Support – VX/RMS ensures file operations work identically on Linux

Optimized for ANSI COBOL – Fujitsu & Micro Focus compatible

Supports Continuous Integration – Migrate & deploy with every release

VX/COBOL is the most complete and efficient solution for migrating VMS COBOL applications to Linux.

Transform Your Legacy Software Today!

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