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[]