JCL

Job Control Language (JCL) is a scripting language used on a mainframe to instruct the system on how to run a batch job. In AWS Blu Insights, it is handled in the mainframe group following the statements listed below.

DD DSN

The call on DD +DSN can implies dependencies on “DATASET” object, “FILE_DEFINITION” object and a control card (.CTL).

  • //file-defintion-name DD (DISP=SHR,)? DSN(AME)?=dataset-name(controlcard-file)

Where file-defintion-name, dataset-name and controlcard-file are respectively a “FILE_DEFINITION” object, a “DATASET” object and the name of a control card in the project. controlcard-file and file-defintion-name are optional. Dynamic dataset-name, i.e with a name containing “%%” or “&”, are not handled yet.

DLBL

The call to DLBL implies a dependency on a Mainframe file.

  • DLBL file_def 'mainframe_file'

Where file_def is the name of the file definition and mainframe_file the name of a mainframe file in the project.

EXEC

EXEC statements like NAME1.NAME2.EXEC implies a dependency on a  JCL, PROC, COB, EZT, REXX, PL1, CLIST or RPG file.

  • NAME1.NAME2.EXEC(MY_PROG) implies a dependency on the program MY_PROG where NAME1 and NAME2 can be any valid names

  • NAME1.EXEC(MY_PROG) implies a dependency on the program MY_PROG where NAME1 can be any valid names

 

EXEC PGM

The call to EXEC PGM implies a dependency on a COB, EZT, REXX, PL1 or RPG file.

  • EXEC PGM=program_file ... PROGRAM=program
  • EXEC PGM=program_file ... PROG=program
  • EXEC PGM=program_file ... PGMNAME=program
  • EXEC PGM=program_file ... PGMNAME='program'
  • EXEC PGM=system_utility PARM=(program_type,program_name,psb_name, ...) ... PROGRAM=program
  • EXEC PGM=system_utility PARM=('program_type',program_name,psb_name, ...) ... PROGRAM=program
  • EXEC PGM=system_utility PARM='program_type,program_name,psb_name, ...' ... PROGRAM=program

Where program_file can be the raw name of a file or a variable (&program_file) containing a filename. PROGRAM, PROG and PGNAME are parameters pass to program_file and program (JCL, PROC, COB, EZT, REXX, PL1, RPG or CCDEF) the name of the program to be executed. PARM=( ... ) or PARM=' ... ' is optional parameter.
When system_utility is configured with some system utility program (DFSRRC00, DLIBATCH, DBBBATCH, IMSBATCH, IMSFP and DLIBMP) and the program_type as DLI, BMP, DBB, IFP. The system utility program uses PARM parameter to execute a program (COBOL, JCL, PROC, REXX, PL1, RPG, ASM, LNK, EZT, CTL or CCDEF) mentioned in program_name and PSB file mentioned in psb_name.
We can also call an in-stream procedure thanks to the EXEC PGM statement. In that case, it will create no dependency.

EXEC PROC

The call to EXEC PROC implies a dependency on a JCL, PROC, COB, EZT, REXX, PL1, CLIST, RPG or CCDEF file.

  • EXEC PROC=procedure_file ... PROGRAM=program
  • EXEC PROC=procedure_file ... PROG=program
  • EXEC PROC=procedure_file ... PGMNAME=program
  • EXEC proc=procedure_file ... PGMNAME='program'
  • EXEC procedure_file ... PROGRAM=program
  • EXEC procedure_file ... PROG=program
  • EXEC procedure_file ... PGMNAME=program
  • EXEC procedure_file ... PGMNAME='program'
  • EXEC PROC=system_utility ... NAME=program,PSB=psb_name
  • EXEC system_utility ... NAME=program,PSB=psb_name

Where procedure_file can be the raw name of a file or a variable (&procedure_file) containing a filename. PROGRAM, PROG and PGNAME are parameters pass to procedure_file and program the name of the program to be executed.
When system_utility is configured with some system utility program (DFSRRC00, DLIBATCH, DBBBATCH, IMSBATCH, IMSFP and DLIBMP) then it executes a program (COBOL, JCL, PROC, REXX, PL1, RPG, ASM, LNK, EZT, CLIST, CTL or CCDEF) mentioned in program_name and PSB file mentioned in psb_name.
We can also call an in-stream procedure thanks to the EXEC PROC statement. In that case, it will create no dependency.

ISPSTART CMD

The call to ISPSTART CMD can be used to reference a program (COBOL, JCL, PROC, REXX, PL1, RPG, ASM, LNK, EZT, CLIST or CTL) 

  • ISPSTART CMD(MY_PROG) implies a dependency on a program called MY_PROG

RUN PROG

The call to RUN PROG implies a dependency on a JCL, PROC, COB, EZT, REXX, PL1 or RPG file.

  • RUN PROG(program_file)

Where program_file can be the raw name of a file or a variable (&program_file) containing this name.

RUN PROGRAM

The call to RUN PROGRAM implies a dependency on a JCL, PROC, COB, EZT, REXX, PL1 or RPG file.

  • RUN PROGRAM(program_file)

Where program_file can be the raw name of a file or a variable (&program_file) containing this name.

SQL STATEMENT

In JCL program, SQL statements are getting executed in the in-stream data section. In-stream data will never begin with //. End of the in-stream can be identified by line begins with // or /* or //* and sometimes end of the file.

  • //SYSIN DD *
    SELECT * FROM TABLE_NAME;
  • //SYSIN DD DATA
    UPDATE TABLE_NAME SET COLUMN1 = VALUE1 WHERE ...;

Note: All in-stream data are not SQL commands. It may be RUN PROGRAM statement or others.

INCLUDE MEMBER

The INCLUDE MEMBER statement implies a dependency on a Mainframe file. Dependencies with variables (starting with “$” or having an “&” in their names) are ignored.

  • INCLUDE MEMBER=mainframe_file

Where mainframe_file is the name of a Mainframe file in the project.

ADDRQ

The call to ADDRQ statement implies a dependency on a JCL file, like the following example:

  • ADDRQ,JOB=file_name_1,DEPJOB= file_name_2

Where file_name_1 and file_name_2 can be the names of a JCL files.

DEMAND

The call to DEMAND statement implies a dependency on a JCL file, like the following example:

  • DEMAND,JOB=file_name_1,DEPJOB= file_name_2

Where file_name_1 and file_name_2 can be the names of a JCL files.

DEMANDH

The call to DEMANDH statement implies a dependency on a JCL file, like the following example:

  • DEMANDH,JOB=file_name_1,DEPJOB= file_name_2

Where file_name_1 and file_name_2 can be the names of a JCL files.

Variables

  • VAR=Test

This statement assignes the value Test to the variable VAR

  • PROG=MY.PROG.OF.&VAR

This statement uses the variable VAR, it is equivalent to do PROG=MY.PROG.OF.Test.
When possible, the dependency analysis will replace the usage of a variable by its value.