//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MY.PS.FILE,DISP=(NEW,CATLG,DELETE)
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.
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.
JCL parameters can be positional or keyword. Positional parameters are defined in a specific sequence, while keyword parameters can be specified in any order.
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.
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.
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.
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 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.
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.
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.
The ability to work under pressure and meet deadlines is crucial in a development environment where deliverables are time-sensitive.
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.
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.
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.
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.
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.
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.
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.
STOP is a normal termination of a program, while ABEND is an abnormal termination of a program due to an error or unexpected condition.
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.
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MY.PS.FILE,DISP=(NEW,CATLG,DELETE)
//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)
//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
//STEP1 EXEC PGM=MYPROG
//STEPLIB DD DSN=MY.LOADLIB,DISP=SHR
// DD DSN=MY.COPYLIB,DISP=SHR
//STEP1 EXEC PGM=COBOLPGM
//STEPLIB DD DSN=MY.LOADLIB,DISP=SHR
//SYSIN DD DSN=MY.COBOL.SOURCE,DISP=SHR
//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
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.
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.
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.
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.
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.
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.
Back-end App Developer
Front-end Web Developer
Full Stack Developer (Java)
Full Stack Developer (.Net)
Full Stack Developer (MEAN)
Full Stack Developer (MERN)
DevOps Engineer
Database Engineer (AzureSQL)
Database Engineer (Oracle)
Database Engineer (General)
Solution Architect (.NET)
Solution Architect (Java)
Solution Architect (Ruby)
Solution Architect (Python)
AI Engineer (Python)
Sr. AI Engineer (Python)
AI Strategist (Python)
Business Intelligence Engineer
Systems Analyst
Mainframe Developer (COBOL)
Mainframe Developer (General)