NL041: Parameter Data Area data structure violations
NL041: Parameter Data Area data structure violations
type: code-smell
priority: major
#bad-practice
#pitfall
Description
Imaging a PDA named PDANAME
, the data structure is expected to be as follows:
1 PDANAME /* (only 1 level 1)
2 PDANAME-IN /* (groups for input, output and optionally input/output)
3 ....
2 PDANAME-OUT
3 ....
Optionally PDANAME-INOUT
can be a group too - it can even be standalone, if all your parameters are input/output (rare).
A PDA structure should follow these rules in order to be able to access each area individually through RESET
and MOVE BY NAME
statements, and to mention the fewest parameters in CALLNAT
’s/PERFORM
’s, which improves readability.
CALLNAT 'SUBPGM' USING PDANAME
PERFORM EXTERNAL-SUBROUTINE-NAME PDANAME
If you have array groups, these are only possible at level > 2.
This behavior can be configured using the natls.style.in_out_groups
option in the analyzer configuration