If a file is defined without the ``++USROPN++`` statement then the natural RPG logic will deal with opening and closing it. However, files defined with ``++USROPN++``, must be both explicitly ``++OPEN++``ed and ``++CLOSE++``d.


== Noncompliant Code Example

----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

C                   OPEN      EWPCCR1   

C                   CLOSE     *ALL
----

----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

 /free
  open  EWPCCR1;
  close *ALL;
 /end-free
----


== Compliant Solution

----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

C                   OPEN      EWPCCR1   

C                   CLOSE     EWPCCR1   
----

----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

 /free
  open  EWPCCR1;
  close EWPCCR1;
 /end-free
----


== See

* https://cwe.mitre.org/data/definitions/459.html[MITRE, CWE-459] - Incomplete Cleanup



ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::message.adoc[]

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

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