In certain computer operating systems, a job is the unit of work that a computer operator (or a program called a job scheduler) gives to the operating system. For example, a job could be the running of an application program such as a weekly payroll program. A job is usually said to be run in batch (rather than interactive) mode. The operator or job scheduler gives the operating system a "batch" of jobs to do (payroll, cost analysis, employee file updating, and so forth) and these are performed in the background when time-sensitive interactive work is not being done. In IBM mainframe operating systems (MVS, OS/390, and successors) a job is described with job control language (JCL). Jobs are broken down into job steps. An example of a job step might be to make sure that a particular data set or database needed in the job is made accessible.
Typically, the development programmer who writes a program that is intended to be run as a batch job also writes the JCL that describes for the operating system how to run the job (for example, what data sets or databases it uses). The use of a job scheduler usually provides greater flexibility and the ability to monitor and report batch job operations.