Hiring guide for GnuCOBOL Engineers

GnuCOBOL Developer Hiring Guide

GnuCOBOL is an open-source, free COBOL compiler. It translates COBOL code into C code and then compiles the generated C code using the native C compiler on various operating systems including Unix/Linux, Mac OS X, and Microsoft Windows. GnuCOBOL implements a substantial part of the COBOL 85, COBOL 2002 and COBOL 2014 standards along with many extensions included in other compilers (IBM COBOL, MicroFocus COBol). The purpose of this programming language is to allow businesses to maintain legacy applications written in this older language at minimal cost while taking advantage of existing resources without having to train staff on new languages.

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

First 20 minutes

General GnuCOBOL app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in GnuCOBOL 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 is a high-level programming language that was first developed in the 1950s. It is primarily used in business, finance, and administrative systems for companies and governments.
What are some of the key features of GnuCOBOL?
GnuCOBOL is a free COBOL compiler, which translates COBOL programs to C code and compiles it using GCC. Some of its key features include support for most of COBOL 85 and COBOL 2002 standards, as well as many extensions of the existent COBOL compilers.
Describe the difference between static call and dynamic call in COBOL.
In a static call, the called program is a standalone program and it is not a part of the main program. In a dynamic call, the called program is loaded into the main memory only when the program is called.
How would you handle errors in GnuCOBOL?
Error handling in GnuCOBOL can be done using the 'ON EXCEPTION' or 'NOT ON EXCEPTION' phrases in the procedure division. These phrases allow you to specify what should happen if an error occurs during the execution of a statement.
What are some of the data types available in COBOL?
COBOL supports several data types, including numeric (which can be further divided into integer, decimal, and floating-point), 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 solid understanding of GnuCOBOL?
Has the candidate demonstrated problem-solving skills?
Is the candidate able to communicate effectively?
Does the candidate have experience with similar projects or tasks?

Next 20 minutes

Specific GnuCOBOL 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 COMP and COMP-3 in COBOL.
COMP is a binary usage, while COMP-3 is a packed decimal usage. COMP uses less storage than COMP-3, but COMP-3 is more precise for decimal arithmetic.
How would you implement file handling in GnuCOBOL?
File handling in GnuCOBOL is done using the I/O verbs like OPEN, READ, WRITE, REWRITE, and CLOSE. These verbs allow you to perform operations on files.
What are some of the string manipulation functions in COBOL?
COBOL provides several string manipulation functions, including STRING, UNSTRING, INSPECT, and CONCATENATE.
Describe the difference between a subscript and an index in COBOL.
A subscript refers to the array occurrence while an index is the displacement (in bytes) from the beginning of the array. An index can only be modified using PERFORM, SEARCH & SET. Subscript can be modified using arithmetic operations.
How would you implement a multi-dimensional array in GnuCOBOL?
Multi-dimensional arrays in GnuCOBOL can be implemented using the OCCURS clause. Each dimension is defined by its own OCCURS clause.
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 GnuCOBOL engineer at this point.

At this point, a skilled GnuCOBOL engineer should demonstrate strong problem-solving abilities, proficiency in GnuCOBOL 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 GnuCOBOL.

What does this simple GnuCOBOL code do?
IDENTIFICATION DIVISION.
PROGRAM-ID. HelloWorld.
PROCEDURE DIVISION.
DISPLAY 'Hello, World!'.
STOP RUN.
This is a simple COBOL program that prints 'Hello, World!' to the standard output.
What will be the output of the following GnuCOBOL code?
IDENTIFICATION DIVISION.
PROGRAM-ID. AddNumbers.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9 VALUE 5.
01 NUM2 PIC 9 VALUE 7.
01 RESULT PIC 9.
PROCEDURE DIVISION.
ADD NUM1, NUM2 GIVING RESULT.
DISPLAY RESULT.
STOP RUN.
This COBOL program adds two numbers, 5 and 7, and displays the result. The output will be 12.
What does this GnuCOBOL code do with the array?
IDENTIFICATION DIVISION.
PROGRAM-ID. ArrayManipulation.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ARRAY-VALUES.
05 ARRAY-VALUE PIC 9 OCCURS 5 TIMES.
PROCEDURE DIVISION.
PERFORM VARYING ARRAY-VALUE FROM 1 BY 1 UNTIL ARRAY-VALUE > 5
DISPLAY ARRAY-VALUE
END-PERFORM.
STOP RUN.
This COBOL program initializes an array of 5 elements and then uses a loop to iterate over the array, displaying each element. The elements are not explicitly initialized, so their values are undefined.
What is the purpose of the following GnuCOBOL code related to threading?
IDENTIFICATION DIVISION.
PROGRAM-ID. ThreadExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 THREAD-HANDLE USAGE IS THREAD-POINTER.
PROCEDURE DIVISION.
CALL 'CBL_THREAD_CREATE' USING BY VALUE THREAD-HANDLE
BY FUNCTION 'ThreadRoutine' GIVING THREAD-HANDLE.
CALL 'CBL_THREAD_JOIN' USING BY VALUE THREAD-HANDLE.
STOP RUN.
This COBOL program creates a new thread using the 'CBL_THREAD_CREATE' function. The new thread executes the 'ThreadRoutine' function. The 'CBL_THREAD_JOIN' function is then used to wait for the thread to finish execution before the main program continues.

Wrap-up questions

Final candidate for GnuCOBOL 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 GnuCOBOL application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What are some of the sorting methods available in COBOL?
COBOL provides several sorting methods, including internal sorting (using the SORT verb) and external sorting (using the INPUT and OUTPUT procedures).
Describe the difference between the PERFORM and CALL statements in COBOL.
The PERFORM statement is used to execute a set of COBOL statements, while the CALL statement is used to call a separate program or a method.
How would you handle exceptions in GnuCOBOL?
Exceptions in GnuCOBOL can be handled using the DECLARATIVES section in the PROCEDURE DIVISION. This section contains the error handling routines for the program.

GnuCOBOL application related

Product Perfect's GnuCOBOL development capabilities

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