== Why is this an issue? The use of ``++options( *nopass )++`` on a parameter makes it optional, so it should always be checked before use. === Noncompliant code example [source,rpg] ---- DCL-PR VIOLATION1 EXTPGM; LASTNAME Char(10); FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT); END-PR; DCL-PI VIOLATION1; LASTNAME Char(10); FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT); END-PI; dsply FIRSTNAME; dsply LASTNAME; // Noncompliant; LASTNAME is optional *inlr = *on; ---- === Compliant solution [source,rpg] ---- DCL-PR VIOLATION1 EXTPGM; LASTNAME Char(10); FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT); END-PR; DCL-PI VIOLATION1; LASTNAME Char(10); FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT); END-PI; dsply FIRSTNAME; IF %PARMS > 1; dsply LASTNAME; EndIf; *inlr = *on; ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Make sure this optional parameter was actually passed before you use it. === Highlighting Parameter name ''' == Comments And Links (visible only on this page) === on 28 Oct 2015, 20:10:15 Ann Campbell wrote: Source: user suggestion with background from \http://www.itjungle.com/fhg/fhg010505-story02.html === on 29 Oct 2015, 13:47:46 Pierre-Yves Nicolas wrote: \[~ann.campbell.2] This rule looks more like a bug detection rule than something about api-design or readability. === on 29 Oct 2015, 14:02:11 Ann Campbell wrote: You're right [~pierre-yves.nicolas]. Adjusted. === on 29 Oct 2015, 14:07:55 Pierre-Yves Nicolas wrote: \[~ann.campbell.2] Should we also update the SQALE characteristic? === on 29 Oct 2015, 14:20:29 Ann Campbell wrote: Thanks [~pierre-yves.nicolas]. That's done too now. endif::env-github,rspecator-view[]