Job Control Language (« langage de contrôle des tâches »), couramment appelé JCL, désigne certains langages de scripts, en particulier sur les systèmes d'exploitation mainframe d'IBM, dont le rôle est d'exécuter un batch. Il existe deux langages JCL d'IBM, l'un utilisé sur la famille DOS/360, l'autre sur la famille OS/360. Bien qu'ils aient en commun des règles de syntaxe et de conception, il s'agit de langages assez différents. Dans le JCL, l'unité est le job (la tâche), laquelle consiste en un ou plusieurs steps (étapes). Chaque step consiste en l'exécution d'un programme spécifique. Ainsi, un job qui consisterait à créer un rapport pourrait être composé des steps suivants : sélection des enregistrements voulus à l'aide d'un programme et stockage des résultats dans un fichier temporaire ; tri des résultats à l'aide d'un utilitaire approprié ; création du rapport proprement dit à l'aide d'un autre programme qui fait le calcul et la mise en forme des informations voulues ; affichage du rapport thumb|Carte perforée correspondant à une ligne d'instruction Le JCL utilise des identifiants basiques que l'on nomme « cartes » (reste de l’époque où chaque ligne de script, de programme était fournie à l’ordinateur au moyen d'une carte perforée). Un script JCL devra débuter par la carte JOB qui permet notamment : de donner un nom au job ; d'identifier le groupe qui recevra le rapport d'exécution ; de définir comment le job doit être exécuté (par exemple sa priorité) Il est possible de créer des scripts JCL qui pourront être appelés dans d'autres scripts JCL en passant si nécessaire des paramètres. De tels scripts sont appelées procédures. Remarque : Par métonymie, le mot JCL désigne aussi le script (job) lui-même. Ainsi, en environnement IBM, on ne parle pas de script JCL mais simplement de JCL ( lancer ou exécuter un JCL). La syntaxe du JCL comparée à la plupart des langages de batch, est assez lourde.
Nicola Marzari, Giovanni Pizzi, Martin Uhrin, Sebastiaan Philippe Huber