Hiring guide for JCL Engineers

JCL Developer Hiring Guide

**Job Control Language (JCL)** is a text-based computer programming language used to control batch jobs in mainframe computer systems. It was developed by IBM in the 1960s and is still in use today. JCL statements are used to specify the input and output files for a job, the commands to be executed, and the resources to be allocated. Here are some additional details about JCL: * JCL is not a general-purpose programming language. It is specifically designed for controlling batch jobs. * JCL statements are typically written in a file called a **JCL jobcard**. * The **Job Control Language Specification** (JCL Spec) defines the syntax and semantics of JCL. * JCL is an open standard and is supported by a variety of mainframe computer vendors.

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

First 20 minutes

General JCL app knowledge and experience

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

How would you define a job in JCL?
A job in JCL is defined by a JOB statement. It includes the job name, programmer's name, and other parameters like class, message level, region, and account information.
What are the basic components of JCL?
The basic components of JCL are Job, Exec, and DD statements. Job defines a unit of work, Exec specifies the program to be executed, and DD connects the program to the required datasets.
Describe the difference between a PROC and a JCL?
A PROC, or procedure, is a set of JCL statements that are grouped together to perform a specific task and can be reused. A JCL, on the other hand, is a complete set of control statements that may include one or more procedures.
How would you use a GDG in JCL?
A Generation Data Group (GDG) is a group of chronologically or sequentially ordered datasets. It can be used in JCL by specifying the GDG name in the DD statement.
What are the different types of parameters in JCL?
JCL parameters can be positional or keyword. Positional parameters are defined in a specific sequence, while keyword parameters can be specified in any order.
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 possess comprehensive knowledge of JCL?
Has the candidate demonstrated problem-solving skills?
Can the candidate work under pressure and meet deadlines?
Does the candidate have experience with mainframe systems?

Next 20 minutes

Specific JCL 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 STOP and ABEND in JCL?
STOP is a normal termination of a program, while ABEND is an abnormal termination of a program due to an error or unexpected condition.
How would you handle errors in JCL?
Errors in JCL can be handled using system abend codes, user abend codes, and conditional processing. The error handling approach depends on the nature and severity of the error.
What are the different types of datasets in JCL?
Datasets in JCL can be sequential, partitioned, or indexed. Sequential datasets contain records in a sequence, partitioned datasets are divided into partitions, and indexed datasets have an index for faster access.
Describe the difference between COND and IF THEN ELSE in JCL?
COND is a conditional parameter used in JOB and EXEC statements to control the execution of jobs or steps based on the condition. IF THEN ELSE is a conditional construct used to perform different actions based on the condition.
How would you use a symbolic parameter in JCL?
A symbolic parameter in JCL is a variable that can be used to pass values. It is defined in the PROC and can be overridden in the JCL that calls the PROC.
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 JCL engineer at this point.

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

What does this simple JCL code do?
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MY.PS.FILE,DISP=(NEW,CATLG,DELETE)
This code creates a new dataset named 'MY.PS.FILE'. IEFBR14 is a utility program that does nothing but return a 'Completion Code 0', which means it executed successfully. The DISP parameter specifies what to do with the dataset, in this case, it creates a new one, catalogs it and deletes it if a step abends.
What will be the output of this JCL code?
//STEP1 EXEC PGM=SORT
//SORTIN DD DSN=MY.INPUT.FILE,DISP=SHR
//SORTOUT DD DSN=MY.OUTPUT.FILE,DISP=(NEW,CATLG)
//SYSIN DD *
  SORT FIELDS=(1,4,CH,A)
This code sorts the data in 'MY.INPUT.FILE' in ascending order based on the first 4 characters and writes the sorted data to 'MY.OUTPUT.FILE'. If 'MY.OUTPUT.FILE' does not exist, it will be created.
What does this JCL code do with the array of datasets?
//STEP1 EXEC PGM=IEBGENER
//SYSUT1 DD DSN=MY.INPUT.FILE1,DISP=SHR
// DD DSN=MY.INPUT.FILE2,DISP=SHR
//SYSUT2 DD DSN=MY.OUTPUT.FILE,DISP=(NEW,CATLG)
//SYSIN DD DUMMY
This code concatenates 'MY.INPUT.FILE1' and 'MY.INPUT.FILE2' into a single output file 'MY.OUTPUT.FILE'. IEBGENER is a utility program used for copying, printing, and comparing datasets.
What does this JCL code do related to threading or concurrency?
//STEP1 EXEC PGM=MYPROG
//STEPLIB DD DSN=MY.LOADLIB,DISP=SHR
// DD DSN=MY.COPYLIB,DISP=SHR
This code executes a program 'MYPROG' with a concurrent search for load modules in 'MY.LOADLIB' and 'MY.COPYLIB'. If the same module exists in both libraries, the one in 'MY.LOADLIB' will be used because it is listed first.

Wrap-up questions

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

What are the different types of utilities in JCL?
JCL utilities include IEBGENER for copying and creating datasets, IEBCOPY for copying and compressing PDS, IEFBR14 for creating and deleting datasets, and IDCAMS for managing VSAM datasets.
Describe the difference between a PDS and a PDSE in JCL?
PDS, or Partitioned Dataset, is a type of dataset that is divided into partitions. PDSE, or Partitioned Dataset Extended, is a newer type of dataset that has additional features like the ability to reclaim space.
How would you use the INCLUDE statement in JCL?
The INCLUDE statement in JCL is used to include the contents of a member of a PDS into the JCL. It is useful for including standard JCL code or PROCs.

JCL application related

Product Perfect's JCL development capabilities

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