× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



On 5/22/2023 12:05 PM, Charles Wilt wrote:
Buck,

That doesn't ring true to me...

Given that the INFSR is defined on the f-spec with the file name, the
(RPG?) runtime should know about the INFSR since it knows which file to
open.

However, the manual mentions

A file exception/error subroutine (INFSR) receives control when an
exception/error occurs on an implicit
(primary or secondary) file operation or on an explicit file operation
that does not have an indicator
specified in positions 73 and 74,does not have an (E) extender, and is not
in the monitor block of a
MONITOR group that can handle the error..


Note "implicit (primary or secondary) file operation..."

So I suspect the OP doesn't have the file defined as primary or secondary,
and thus the error during an implicit open isn't being caught.

Assuming a file defined as full procedural, then USROPN and an
explicit OPEN would indeed be the only way to catch CPF4128.

I *think* the manual reference is specifically referring to I/O operations in the C-specs, READ, CHAIN, WRITE and so on. Implicit OPENs are not in this hypothetical cohort of mine, so I wrote a little example to test my memory of trapping errors on an implicit OPEN.

PF-PSSR:
A R PSSRREC
A CHAR5 5A

RPGLE-PSSR:
h dftactgrp(*no) actgrp('QILE') debug(*yes) fixnbr(*noinputpacked)
fpssr ip F 5 disk infsr(*pssr)

ipssr aa 01 1 CX

dump(a) 'Primary cycle read';
*inlr = *on;
return;

begsr *pssr;
dump(a) 'In *PSSR';
endsr '*GETIN';

Add a record to the file:
insert into pssr (char5) values('12345');

CALL PSSR
This does the implicit OPEN, reads the first/only record - it doesn't match the record selection and throws status 01011 / RNX1011. This gets trapped by *PSSR as expected.

Now revoke authority to the file; perhaps PUBLIC(*EXCLUDE) and run it again. This time, a white message appears, CPF4104 Not authorised. This does not get trapped by *PSSR.

I've always though of this (perhaps wrongly) as a matter of my exception handler (*PSSR) not being active yet, and so the RPG Default Exception Handler has control of errors during *INIT.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.