PL 1 or PL I (Programming Language One) is part of the mainframe dependencies engine in AWS Blu Insights. It is handled among all other types of files, including Cobol for example. Below are listed the supported statements for dependencies detection.
There are various <INCLUDE>
statements in the PL1/PLI language and those are XINCLUDE
, -INC
, ++INCLUDE
and %INCLUDE
.
The call on <INCLUDE>
implies dependencies on .CPY, .PLI, .PL1 or .INC files.
<INCLUDE> ‘FILE’
<INCLUDE> “FILE”
<INCLUDE> FILE
<INCLUDE> <LIBRARY> (FILE)
where <INCLUDE>
can be one of the XINCLUDE
, -INC
, ++INCLUDE
and %INCLUDE
statements. <LIBARY>
is either SYSLIB
or SFSTDS
FILE
is the name of the file.
A callable unit in PL/1 can be one of the following:
An internal or external procedure declared within the same file or its included files
MYPROGRAM: PROC;
DCL X FIXED;
INTERNAL_PROC: PROC;
/* Internal procedure code */
END INTERNAL_PROC;
END MYPROGRAM;
An external procedure exported by other PL/1 programs
EXTERNAL_PROC: PROC EXTERNAL;
/* External procedure code */
END EXTERNAL_PROC;
Or multiple procedures declared at the same level
/* first external procedure */
EXAMPLE1: PROCEDURE OPTIONS(MAIN);
/* External procedure code */
END EXAMPLE1;
/* Second external procedure */
EXAMPLE2: PROCEDURE;
/* External procedure code */
END EXAMPLE2;
A BUILTIN function
DCL LENGTH BUILTIN;
X = LENGTH(STRING); /* Using built-in LENGTH function */
A variable of type ENTRY
DCL FILE1 ENTRY ...
The CALL statement in PL/1 creates dependencies between program elements. However, not all calls generate dependencies.
Creates dependencies:
Does not create dependencies:
Example
DCL myExtProc VARIABLE Entry(FORMAT); /* No dependency created */
DCL myGenericProc Generic; /* No dependency created */
When a PL/1 program declares an ENTRY variable that references another program, a dependency link is created to the target program, unless the ENTRY declaration includes the VARIABLE option.
Examples
DCL FILE1 ENTRY ...
- An Entry reference
dependency is created, linking to the program FILE1
DCL FILE2 ENTRY VARIABLE...
- No dependencyWe support several calls on DELETE / READ / WRITE / REWRITE _FILE_
, the call itself could be on multiple lines or not. We expect to find dependencies of any extension but .CBL, .COB and .CPY.
EXEC CICS DELETE / READ / WRITE / REWRITE FILE(“FILE”) … END-EXEC
EXEC CICS DELETE / READ / WRITE / REWRITE FILE(‘FILE’) … END-EXEC
EXEC CICS DELETE / READ / WRITE / REWRITE FILE(FILE_VAR) … END-EXEC
that implies dependencies on the values of FILE_VAR
including its initial value and all the values set with a MOVE ... TO _FILE_VAR_
operation. The variable can be declared in the same file as the call or in one of its imported copybooks.LINK / XCTL PROGRAM
We support several calls on LINK _PROGRAM_
, the call itself could be on multiple lines or not. We expect to find dependencies of any extension.
EXEC CICS LINK / XCTL PROGRAM(“PROGRAM”) … END-EXEC
that implies a dependency on a file named “PROGRAM”EXEC CICS LINK / XCTL PROGRAM(‘PROGRAM’) … END-EXEC
that implies a dependency on a file named “PROGRAM”EXEC CICS LINK / XCTL PROGRAM(PROGRAM_VAR) … END-EXEC
that implies dependencies on the values of _PROGRAM_VAR_
including its initial value and all the values set with a MOVE ... TO PROGRAM_VAR
operation. The variable can be declared in the same file as the call or in one of its imported copybooks.We support several calls on RECEIVE MAP
, the call itself could be on multiple lines or not. We expect to find dependencies of any extension but .CBL, .COB and .CPY :
EXEC CICS SEND / RECEIVE MAP / MAPSET(“_MAP_”) ... END-EXEC
that implies a dependency on a file named “MAP”EXEC CICS SEND /RECEIVE MAP / MAPSET('_MAP_') ... END-EXEC
that implies a dependency on a file named “MAP”EXEC CICS SEND /RECEIVE MAP / MAPSET(_MAP_VAR_) ... END-EXEC
that implies dependencies on the values of MAP_VAR
including its initial value and all the values set with a MOVE ... TO MAP_VAR
operation. The variable can be declared in the same file as the call or in one of its imported copybooks.EXEC CICS exec-cics-verb TRANSID(“transaction-name”) ... END-EXEC
implies a dependency on a “TRANSACTION” object named “transaction-name”EXEC CICS exec-cics-verb TRANSID('transaction-name'”) ... END-EXEC
implies a dependency on a “TRANSACTION” object named “transaction-name”EXEC CICS exec-cics-verb TRANSID(variable-name) ... END-EXEC
implies a dependency on all “TRANSACTION” objects referenced by the variable “variable-name”“exec-cics-verb” can be one of the following
We support several calls on EXEC SQL
, the call itself could be on multiple lines or not. We expect to find the dependencies of any extension. The dependencies are detected for the following operations in the request :
EXEC SQL ... FROM TABLE1, TABLE2 ... END-EXEC
where TABLE1
and TABLE2
are files corresponding to SQL tables. TABLE2
is optional and if there are only two tables, commas aren’t needed.EXEC SQL ... INSERT INTO TABLE1 ... END-EXEC
where TABLE1
is a file corresponding to a SQL table.EXEC SQL ... JOIN TABLE1 T1 ON ... END-EXEC
where TABLE1
is a file corresponding to a SQL table and T1 is an optional alias for TABLE1
used in the rest of the request.EXEC SQL ... UPDATE TABLE1 SET ... END-EXEC
where TABLE1
is a file corresponding to a SQL table.The call on EXEC SQL INCLUDE
implies dependencies on .CPY, .PLI, .PL1 or .INC files.
EXEC SQL INCLUDE / SOURCE '_FILE_' ... END-EXEC
EXEC SQL INCLUDE/ SOURCE "_FILE_" ... END-EXEC
EXEC SQL INCLUDE/ SOURCE _FILE_ ... END-EXEC
The call on COPY
implies dependencies on .CPY, .PLI, .PL1 or .INC files.
COPY ‘FILE’
COPY “FILE”
COPY FILE
COPY <LIBRARY> (FILE)
where <LIBARY>
is either SYSLIB
or SFSTDS
FILE
is the name of the file.