Disclaimer: I haven't written JCL for over 20 years now and am a bit rusty.
TLA for Job Control Language. The method of choice to talk to computers when
punch cards were
en vogue.
Imagine a non-interactive shell script, if you like.
Mainly used for
IBM operation systems but often available in a similar format in all operating systems with strong batch features.
A simple example follows :
//HOGGLE01 JOB
// EXEC PGM=FLOBBO
//SYSIN DD *
happy application input data lives here
just punched on cards and read line by line
/*
//
So what does this do ? Start a job called HOGGLE01 (allowing the operator to do nasty things with it by name), runs a progam named FLOBBO that reads input from
the standard input (SYSIN). The input is just put after the
DD * statement (* is the equivalent of stdin), read by FLOBBO until it reads the EOF, which is a card with /* on it. The last card, //, is the end-of-job.
Of course, JCL allows for way more complicated things - including job nets (run job 1, depending on the result, run either job 2 or job 3), conditional execution of job steps,
plus loads of more or less well-documented options, switches and parameters.