== Why is this an issue?

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

[source,rpg]
----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

C                   OPEN      EWPCCR1   

C                   CLOSE     *ALL
----

[source,rpg]
----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

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


=== Compliant solution

[source,rpg]
----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

C                   OPEN      EWPCCR1   

C                   CLOSE     EWPCCR1   
----

[source,rpg]
----
FEWPCCR1   O    E             PRINTER USROPN           
F                                     INFDS(WSFD01)   
F                                     INFSR(*PSSR)     

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


== Resources

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



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

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

=== Message

Explicitly close this file.


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

=== relates to: S1725

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