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)

include::message.adoc[]

include::highlighting.adoc[]

'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
