The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


DBIx::JCL - Job Control Library for database load tasks.


    # file:
    use strict;
    use warnings;
    use DBIx::JCL qw( :all );

    my $jobname = 'name_of_job';
    sys_init( $jobname );

    # perform database tasks calling DBIx-JCL functions
    # ...

    exit sys_get_errorlevel();


This documentation describes the perl module and the use of standardized perl scripts which together provide a common job execution environment to support database backend load and maintenance tasks.


Provide a suite of standard functions that can be shared across all batch job scripts used to support database back end tasks. Provide a standardized approach for the development of all back end database job scripts. Centralize the administration and access to configuration data. Enforce coding standards and documentation. Abstract the sql used to support back end processes from the task processing logic, by placing all sqlinto an sql library. This will make maintenance of back end sql a trivial task. Provide generalized logging, notification, and system information functions.

If you want to write a robust database extract and load job with complete support for logging and error notification, and do it in 25 lines of code, read on.


Database maintenance and load jobs written using DBIx-JCL support the following options out-of-the-box, with no additional work required on your part.

Job Options:

    | -r   | Run job
    | -rb  | Run job in the background
    | -rs  | Run job at requested start time
    | -rr  | Restart job after failure
    | -rde | Run using specified DE number
    | -x   | Pass extra parameters to job script
    | -c   | Specify database connections
    | -v   | Verbose
    | -vv  | Very Verbose
    | -ng  | No greeting
    | -tc  | Test database connections

Logging Options:

    | -lf  | Log filename
    | -lg  | Log generations
    | -ll  | Log log levels
    | -lp  | Log file prefix
    | -lr  | Log archive file radix
    | -cl  | Log console levels

Notificaiton Options:

    | -ne  | Notify email on completion
    | -np  | Notify pager on completion
    | -et  | Email notification to list
    | -el  | Email notification levels
    | -pt  | Pager notification to list
    | -pl  | Pager notification levels

Information Options:

    | -dp  | Display job parameters
    | -dq  | Display job querys
    | -dd  | Display job documentation
    | -dl  | Display last log file
    | -da  | Display archived log files
    | -dj  | Display a list of job scripts
    | -dja | Diaplay jobs active in the system

Utility Options:

    | -se  | Send email message
    | -sp  | Send pager message
    | -um  | Util no move files
    | -h   | Help
    | -ha  | Help on option arguments



The DBIx-JCL modules provides many capabilities commonly needed in support of database maintenance jobs designed to run in a production environment. Below is a summary list of features and the types of functions provided to support those features.


The following features have been designed in to the DBIx-JCL module:

  • Logging support with log file rotation

  • Notification support

  • Simplified DBI interface

  • Configuration data stored externally

  • High level functions not available in the DBI

  • SQL stored in "SQL books"

  • Job documentation enforced

  • Job control functions

  • Plugin support


The features listed above have been implemented by providing [many] functions for use by your database mantenance jobs:

  • Functions for command line interaction

  • Functions for initialization, monitoring, and control

  • Functions for database interaction

  • Functions for log file access and maintenance

  • Functions for file manipulation



Shown below is the standard approach to writing job scripts.,bin
    ##$$Description of this job

    use strict;
    use warnings;
    use DBIx::JCL qw( :all );

    # initialize
    # -------------------------------------------------------------------------

    my $jobname = 'name_of_script';
    sys_init( $jobname );

    my $dbenv1 = 'mydb1';
    my $mysql1 = sys_get_sql( 'query_number_1' );

    # main
    # -------------------------------------------------------------------------

    log_info( sys_get_dbdescr( $dbenv1 ) );
    db_connect( $dbenv1 );

    # do more db stuff here

    # end
    # -------------------------------------------------------------------------

    =begin wiki

    !1 NAME

    Name of script



    Describe the job script here.



    Document recovery notes here.



    Document dependencies here.





Please see the documentation embedded in this source file for [LOTS!] of additional details on how to use You can view this documentation using module to format the WikiText content in this file. Hint: download and install

Thank you!


Copyright 2008 Brad Adkins <>.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.


Brad Adkins,