Hiring guide for PL/I Engineers

PL/I Developer Hiring Guide

PL/I, short for Programming Language One, is a multipurpose computer programming language developed by IBM in the late 1960s. It was designed to offer features from both scientific computing and business data processing, integrating aspects of FORTRAN and COBOL respectively. The language was widely used in mainframe environments and has had significant influence on many subsequent languages including C and Java. Despite its decline in popularity over recent decades, it remains in use today especially within large-scale business systems. Its development and legacy are well-documented through sources such as IBM's own historical records ("PL/I for AIX", n.d., IBM Knowledge Center).

Ask the right questions secure the right PL/I talent among an increasingly shrinking pool of talent.

First 20 minutes

General PL/I app knowledge and experience

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

How would you declare a variable in PL/I?
You can declare a variable in PL/I using the DECLARE statement. For example, 'DECLARE (variable_name) CHAR(10);' declares a character variable with a length of 10.
What are the basic data types in PL/I?
The basic data types in PL/I are CHARACTER, BIT, DECIMAL, FLOAT, and POINTER.
How would you define a procedure in PL/I?
A procedure in PL/I is defined using the PROCEDURE statement. It includes the procedure name, parameters, and the procedure body enclosed in BEGIN and END statements.
Describe the difference between the DO WHILE and DO UNTIL statements in PL/I.
DO WHILE and DO UNTIL are loop control statements in PL/I. DO WHILE executes the loop as long as the condition is true. DO UNTIL executes the loop until the condition becomes true.
How would you handle exceptions in PL/I?
Exceptions in PL/I are handled using the ON statement. The ON statement specifies the action to be taken when a particular condition occurs.
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 PL/I syntax and structure?
Does the candidate have experience with debugging and problem-solving in PL/I?
Does the candidate show a strong understanding of data structures and algorithms?
Can the candidate communicate effectively about their coding process and decisions?

Next 20 minutes

Specific PL/I 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.

What is the purpose of the SIGNAL statement in PL/I?
The SIGNAL statement in PL/I is used to transfer control to a specified statement label, usually for exception handling purposes.
How would you define a multidimensional array in PL/I?
A multidimensional array in PL/I is defined using the DECLARE statement. For example, 'DECLARE A(3,3) FIXED;' declares a two-dimensional array with 3 rows and 3 columns.
What are the different types of file organizations supported by PL/I?
PL/I supports three types of file organizations: sequential, relative, and indexed.
Describe the difference between the GET and PUT statements in PL/I.
GET and PUT are I/O statements in PL/I. GET is used to read data from a file, while PUT is used to write data to a file.
How would you implement recursion in PL/I?
Recursion in PL/I can be implemented by defining a procedure that calls itself. The recursive call must be controlled by a condition to prevent infinite recursion.
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 PL/I engineer at this point.

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

What does the following PL/I code do?
DECLARE variable FIXED DECIMAL (5,2);
This code declares a fixed decimal variable named 'variable'. The number in the parentheses (5,2) indicates that the variable will have a total of 5 digits, two of which are for the decimal fraction.
What will be the output of the following PL/I code?
DECLARE (x, y) FIXED DECIMAL (5,2); 
 x = 10.25; 
 y = 5.00; 
 PUT SKIP LIST (x / y);
The code will output '2.05'. It first declares two fixed decimal variables 'x' and 'y', assigns the values 10.25 and 5.00 to them, then calculates the division of 'x' by 'y' and outputs the result.
What does the following PL/I code do?
DECLARE ARRAY ARRAY(5) FIXED DECIMAL (5,2);
 ARRAY(1) = 1.00;
 ARRAY(2) = 2.00;
 ARRAY(3) = 3.00;
 ARRAY(4) = 4.00;
 ARRAY(5) = 5.00;
This code declares an array of five elements, each of a fixed decimal type with up to 5 digits, two of which are for the decimal fraction. It then assigns the values 1.00, 2.00, 3.00, 4.00, and 5.00 to the five elements in the array.
What does the following PL/I code do?
DECLARE THREAD(10) FIXED BINARY;
 DO i = 1 TO 10;
 THREAD(i) = START(ROUTINE1);
 END;
The code declares an array of 10 threads, then starts each of these threads to execute a routine named ROUTINE1. The START function returns a thread identifier which is stored in the THREAD array.

Wrap-up questions

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

What is the purpose of the ALLOCATE statement in PL/I?
The ALLOCATE statement in PL/I is used to dynamically allocate memory during program execution.
How would you use pointers in PL/I?
Pointers in PL/I are used to store the memory address of a variable. You can declare a pointer using the POINTER data type and use the ADDR function to get the address of a variable.
Describe the difference between static and dynamic calls in PL/I.
In a static call, the called procedure is linked to the calling program at compile time. In a dynamic call, the linkage is done at runtime.

PL/I application related

Product Perfect's PL/I development capabilities

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