== Why is this an issue?

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)

=== Message

Add the error handling "INFSR(xxxx)" keyword to this F spec


=== Parameters

.format_error_handling
****

----
^{empty}*PSSR$
----

Regular expression describing the names of valid error handling routines
****


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