Skip to main content

Actions

The ballerinax/copybook package exposes the following clients:

ClientPurpose
ConverterConverts Ballerina records to COBOL copybook-formatted byte arrays and deserializes copybook byte arrays back to Ballerina JSON maps.

Converter​

Converts Ballerina records to COBOL copybook-formatted byte arrays and deserializes copybook byte arrays back to Ballerina JSON maps.

Configuration​

FieldTypeDefaultDescription
schemaFilePathstringRequiredThe file path to the COBOL copybook definition file (.cpy) that describes the data structure.

Initializing the client​

import ballerinax/copybook;

copybook:Converter converter = check new ("resources/copybook.cpy");

Operations​

Serialization​

toBytes

Converts a Ballerina record {} or map<json> value into a COBOL copybook-formatted byte array. The output byte layout is determined by the PIC clauses in the copybook schema. Optionally specify the target record name when the schema defines multiple top-level types, and the desired output encoding (ASCII or EBCDIC).

Parameters:

NameTypeRequiredDescription
inputrecord {}YesThe Ballerina record or map<json> value to serialize into copybook bytes.
targetRecordNamestring?NoThe name of the copybook record definition to use. Required only when the schema file contains more than one top-level record definition.
encodingcopybook:EncodingNoThe output byte encoding. Use copybook:ASCII (default) or copybook:EBCDIC for IBM mainframe compatibility.

Returns: byte[]|copybook:Error

Sample code:

import ballerinax/copybook;

copybook:Converter converter = check new ("resources/copybook.cpy");

record {} employee = {
EmployeeId: "EMP1",
EmployeeName: {
FirstName: "John ",
LastName: "Doe "
},
EmployeeSalary: 0075000.00,
EmployeeGrade: "A"
};

byte[] asciiBytes = check converter.toBytes(employee);

Sample response:

[69, 77, 80, 49, 74, 111, 104, 110, 32, 32, 32, 32, 32, 32, 68, 111, 101, 32, 32, 32, 32, 32, 32, 32, 48, 48, 55, 53, 48, 48, 48, 46, 48, 48, 65]

FromBytes​

fromBytes

Deserializes a COBOL copybook-formatted byte array into a Ballerina map<json> value. The field mapping and value extraction are driven by the PIC clauses in the copybook schema. Optionally specify the target record name when the schema defines multiple top-level types, and the encoding of the incoming bytes.

Parameters:

NameTypeRequiredDescription
bytesbyte[]YesThe copybook-formatted byte array to deserialize.
targetRecordNamestring?NoThe name of the copybook record definition to use. Required only when the schema file contains more than one top-level record definition.
encodingcopybook:EncodingNoThe encoding of the input bytes. Use copybook:ASCII (default) or copybook:EBCDIC for IBM mainframe byte streams.

Returns: map<json>|copybook:Error

Sample code:

import ballerinax/copybook;

copybook:Converter converter = check new ("resources/copybook.cpy");

// asciiBytes is a byte[] received from a mainframe or file
map<json> result = check converter.fromBytes(asciiBytes);

Sample response:

{
"EmployeeId": "EMP1",
"EmployeeName": {
"FirstName": "John",
"LastName": "Doe"
},
"EmployeeSalary": 75000.00,
"EmployeeGrade": "A"
}