JCL Developer Hiring Guide

Hiring Guide for JCL Engineers

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

**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.

First 20 minutes

General JCL knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

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.

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.

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.

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.

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.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Has the candidate shown a capacity for continuous learning?

The tech field is always evolving, so it's important for a candidate to show they are committed to keeping their skills and knowledge up to date.

Is the candidate able to communicate effectively?

Effective communication is key in any role, but particularly for a developer who may need to explain complex concepts to non-technical team members or stakeholders.

Does the candidate have experience with mainframe systems?

Experience with mainframe systems is important as JCL is often used in these environments. A candidate with this experience would be able to navigate and utilize these systems effectively.

Can the candidate work under pressure and meet deadlines?

The ability to work under pressure and meet deadlines is crucial in a development environment where deliverables are time-sensitive.

Has the candidate demonstrated problem-solving skills?

Problem-solving skills are essential for a JCL developer. They must be able to troubleshoot and solve issues that may arise during the development process.

Does the candidate possess comprehensive knowledge of JCL?

A deep understanding of JCL is critical as it forms the basis of the role. This knowledge is necessary for the development and modification of job control language scripts.

Next 20 minutes

Specific JCL development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

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.

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.

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.

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.

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.

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 have demonstrated expertise in writing and debugging JCL scripts, knowledge of mainframe systems, and problem-solving abilities. Red flags would be a lack of specific examples or inability to explain complex concepts clearly.

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.

What does this JCL code do related to class design or class object?

//STEP1 EXEC PGM=COBOLPGM
//STEPLIB DD DSN=MY.LOADLIB,DISP=SHR
//SYSIN DD DSN=MY.COBOL.SOURCE,DISP=SHR

This code executes a COBOL program 'COBOLPGM' with the source code located in 'MY.COBOL.SOURCE'. The load library 'MY.LOADLIB' is used to search for any called programs.

What will be the output of this advanced 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)
  SUM FIELDS=NONE

This code sorts the data in 'MY.INPUT.FILE' in ascending order based on the first 4 characters and removes duplicates, then writes the sorted data to 'MY.OUTPUT.FILE'. If 'MY.OUTPUT.FILE' does not exist, it will be created.

Wrap-up questions

Final candidate for JCL role questions

The final few interview questions for a JCL candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

Describe the difference between a cataloged and a non-cataloged dataset in JCL?

A cataloged dataset is one that is listed in the system catalog and can be referred to by its name. A non-cataloged dataset is not listed in the system catalog and must be referred to by its volume serial number, unit, and relative dataset number.

What are the different types of sorting in JCL?

Sorting in JCL can be done in ascending or descending order. It can be done on one or more fields, and the fields can be of different types like character, binary, packed decimal, etc.

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.

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.

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.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

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.