Hiring guide for OpenCOBOL Engineers

OpenCOBOL Developer Hiring Guide

OpenCOBOL, now known as GnuCOBOL, is a free and open-source COBOL compiler that was first released in 2002. It translates COBOL code into C and compiles the translated code using the native C compiler on various platforms including Unix/Linux and Windows. The software was developed by Keisuke Nishida and Roger While with its development currently managed by Simon Sobisch. OpenCOBOL implements a substantial part of the COBOL 85, COBOL 2002 standards along with many extensions of the existent COBOL compilers. This programming language is widely recognized for its ability to handle massive data manipulation tasks efficiently.

Ask the right questions secure the right OpenCOBOL talent among an increasingly shrinking pool of talent.

First 20 minutes

General OpenCOBOL app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in OpenCOBOL application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable systems.

How would you define COBOL?
COBOL stands for Common Business-Oriented Language. It's a high-level programming language that was first developed in the 1950s and is still used today, particularly in business, finance, and administrative systems for companies and governments.
What are the main features of COBOL?
COBOL is known for its English-like syntax which makes it easy to read and maintain. It also supports file handling and has strong capabilities for handling and manipulating data.
Describe the difference between structured and unstructured COBOL.
Structured COBOL follows a top-down design approach and uses control structures like sequence, selection, and iteration. Unstructured COBOL, on the other hand, does not follow any particular structure and can be difficult to read and maintain.
How would you handle errors in OpenCOBOL?
OpenCOBOL provides a variety of error handling mechanisms. One common method is using the 'ON EXCEPTION' clause in the procedure division to handle exceptions at runtime.
What are the different data types available in COBOL?
COBOL supports several data types including numeric (consisting of integers and decimals), alphanumeric, alphabetic, and boolean.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What you’re looking for early on

Does the candidate have a strong understanding of OpenCOBOL?
How well does the candidate understand and apply COBOL best practices?
Can the candidate demonstrate experience with large-scale projects?
Does the candidate show a clear ability to problem-solve and debug?

Next 20 minutes

Specific OpenCOBOL development questions

The next 20 minutes of the interview should focus on the candidate's expertise with specific backend frameworks, their understanding of RESTful APIs, and their experience in handling data storage and retrieval efficiently.

Describe the difference between static and dynamic calls in COBOL.
In a static call, the called program is a part of the calling program and it stays in memory until the calling program finishes execution. In a dynamic call, the called program is not part of the calling program and is loaded into memory only when the program is called.
How would you use the 'Inspect' verb in COBOL?
The 'Inspect' verb is used to count or replace characters in a string. It has several formats including 'INSPECT string TALLYING count FOR ALL characters' and 'INSPECT string REPLACING ALL old-characters BY new-characters'.
What are the different divisions in a COBOL program?
A COBOL program is divided into four divisions: Identification Division, Environment Division, Data Division, and Procedure Division.
Describe the difference between 'Call by Content' and 'Call by Reference' in COBOL.
In 'Call by Content', a copy of the variable is passed to the called program, so changes made to the variable in the called program do not affect the original variable. In 'Call by Reference', a reference to the variable is passed, so changes made in the called program do affect the original variable.
How would you use the 'Perform' statement in COBOL?
The 'Perform' statement is used to execute a group of statements. It can be used in several ways, including 'Perform paragraph-name' to execute a specific paragraph, and 'Perform paragraph-name Until condition' to execute a paragraph repeatedly until a condition is met.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the OpenCOBOL engineer at this point.

At this point, a skilled OpenCOBOL engineer should demonstrate strong problem-solving abilities, proficiency in OpenCOBOL programming language, and knowledge of software development methodologies. Red flags include lack of hands-on experience, inability to articulate complex concepts, or unfamiliarity with standard coding practices.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with OpenCOBOL.

What does this simple COBOL program do?
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Hello, World!'.
STOP RUN.
This is a basic COBOL program that prints 'Hello, World!' to the console.
What will be the output of this COBOL program?
IDENTIFICATION DIVISION.
PROGRAM-ID. ADDNUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9 VALUE 5.
01 NUM2 PIC 9 VALUE 7.
01 SUM PIC 9.
PROCEDURE DIVISION.
ADD NUM1, NUM2 GIVING SUM.
DISPLAY SUM.
STOP RUN.
This program adds two numbers, 5 and 7, and displays the result. So, the output will be 12.
What does this COBOL code snippet do?
IDENTIFICATION DIVISION.
PROGRAM-ID. ARR.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ARR-TABLE.
05 ARR OCCURS 5 TIMES INDEXED BY I.
10 ARR-ELEMENT PIC 9.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
MOVE I TO ARR-ELEMENT (I)
END-PERFORM.
STOP RUN.
This code creates an array of 5 elements and assigns each element the value of its index. The PERFORM VARYING loop is used to iterate over the array.
What does this COBOL code snippet do?
IDENTIFICATION DIVISION.
PROGRAM-ID. THREAD.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
C01 IS CRITICAL-SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SHARED-DATA PIC 9 VALUE 0.
PROCEDURE DIVISION.
PERFORM WITH TEST BEFORE UNTIL SHARED-DATA = 10
ENTER C01
ADD 1 TO SHARED-DATA
EXIT C01
END-PERFORM.
STOP RUN.
This code demonstrates a simple use of threading in COBOL. It uses a critical section to ensure that the shared data is accessed by only one thread at a time. The loop continues until the shared data reaches 10.

Wrap-up questions

Final candidate for OpenCOBOL Developer role questions

The final few questions should evaluate the candidate's teamwork, communication, and problem-solving skills. Additionally, assess their knowledge of microservices architecture, serverless computing, and how they handle OpenCOBOL application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What are the different types of files that can be used in COBOL?
COBOL supports several types of files including Sequential Files, Indexed Files, and Relative Files.
Describe the difference between 'Continue' and 'Next Sentence' in COBOL.
'Continue' gives control to the next executable statement after the scope terminator. 'Next Sentence' gives control to the next statement after the period.
How would you handle arrays in COBOL?
Arrays in COBOL are known as tables. They are defined in the Data Division using the 'Occurs' clause. You can access elements of the table using subscripts or index.

OpenCOBOL application related

Product Perfect's OpenCOBOL development capabilities

Beyond hiring for your OpenCOBOL engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in OpenCOBOL projects, and can engage in multiple capacities.