Error handling should be defined on file operations to ensure correct processing of program failures rather than defaulting to an abnormal program end. This rule checks two things: 

* ``++INFSR++`` error handling is defined on file operations.
* error handling is delegated to an appropriately named routine.


== Noncompliant Code Example

Given the default parameter value, ``++^*PSSR$++``:

[source,rpg]
----
     F* Noncompliant
     FIPBDCCP   IF   E           K DISK

     FEP210     CF   E             WORKSTN
     F                                     SFILE(EP21003S:RELN03)     

     FEP471R1   O    E             PRINTER 
     F                                     USROPN
     F                                     INFDS(W1SF01)
----


== Compliant Solution

[source,rpg]
----
     FIPBDCCP   IF   E           K DISK    INFSR(*PSSR)

     FEP210     CF   E             WORKSTN INFSR(*PSSR)
     F                                     SFILE(EP21003S:RELN03)

     FEP471R1   O    E             PRINTER INFSR(*PSSR)
     F                                     USROPN
     F                                     INFDS(W1SF01)
----

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

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

include::message.adoc[]

include::parameters.adoc[]

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