Sounds like a very good habit to get into.
I'm adding it to my list of good habits.
-----Original Message-----
From: RPG400-L <rpg400-l-bounces-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org> On Behalf Of Daniel Gross
Sent: Tuesday, August 19, 2025 12:15 PM
To: [email protected]
Subject: Re: Declaring an external printer file
I constantly use ON-EXIT - it's like a "finally" clause in Java - it is ALWAYS executed - even if someone kills your job with *IMMED - the ON-EXIT gets executed - you cannot stop it.
So closing files or cursors, releasing allocated memory, diagnostic info (e.g. to the joblog) - it's quite versatile.
If you declare a Boolean variable, you can even see, if your procedure ended normal or not.
dcl-s isAbnormalEnd ind inz;
...
on-exit isAbnormalEnd;
if isAbnormalEnd;
// procedure ended abnormally
endif;
Nearly every procedure I write has an ON-EXIT section.
HTH
Daniel
> Am 19.08.2025 um 18:03 schrieb Charles Wilt <[email protected]>:
>
> ?Interesting...
>
> Never thought of that trick...
>
> Charles
>
>> On Tue, Aug 19, 2025 at 9:58 AM Daniel Gross <[email protected]> wrote:
>>
>> Hi Greg,
>>
>> the compiler doesn't generate I-specs for files defined in a
>> sub-procedure.
>>
>> So either define the file IN the sub-procedure and always use data
>> structures for all output statements.
>>
>> Or define the file globally with USROPN - let the compiler generate
>> global I-specs - use the file like normal - and just only open and
>> close it inside the procedure.
>>
>> Either way, I recommend closing the file in the ON-EXIT section like that:
>>
>> on-exit;
>> if %open(...);
>> close ...;
>> endif;
>>
>> This way, the file always gets correctly closed - even if the
>> procedure ends abnormally.
>>
>> HTH
>> Daniel
>>
>>
>>> Am 19.08.2025 um 17:31 schrieb Greg Wilburn <
>> gwilburn-kuYYJ3CQfvZxq3Q2jbZZw/[email protected]>:
>>>
>>> ?I would like to declare a printer file in a sub procedure... but I
>> can't seem to get the program to compile.
>>> If I move it to the program level, it compiles just fine.
>>>
>>> When the DCL-F is in the sub procedure, I get RNF7274: A result data
>> structure is required for I/O operations to file MYPRTF
>>>
>>> The goal is to only open the externally described printer file when
>>> that
>> particular sub proc is called, and close it when the procedure is finished.
>>>
>>> TIA
>>> Greg
>>>
>>> [Logo]<https://www.totalbizfulfillment.com/> Greg Wilburn
>>> Director of IT
>>> 301.895.3792 ext. 1231
>>> 301.895.3895 direct
>>> gwilburn-kuYYJ3CQfvZxq3Q2jbZZw/[email protected]<mailto:gwilburn@totalbizfulfillment
>>> .com
>>>
>>> 1 Corporate Dr
>>> Grantsville, MD 21536
>>> www.totalbizfulfillment.com<http://www.totalbizfulfillment.com>
>>> --
>>> This is the RPG programming on IBM i (RPG400-L) mailing list To post
>>> a message email: [email protected] To subscribe,
>>> unsubscribe, or change list options,
>>> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
>>> or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
>>> Before posting, please take a moment to review the archives at
>>> https://archive.midrange.com/rpg400-l.
>>>
>>> Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription
>> related questions.
>>>
>> --
>> This is the RPG programming on IBM i (RPG400-L) mailing list To post
>> a message email: [email protected] To subscribe,
>> unsubscribe, or change list options,
>> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
>> or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
>> Before posting, please take a moment to review the archives at
>> https://archive.midrange.com/rpg400-l.
>>
>> Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription
>> related questions.
>>
>>
> --
> This is the RPG programming on IBM i (RPG400-L) mailing list To post a
> message email: [email protected] To subscribe, unsubscribe,
> or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
> Before posting, please take a moment to review the archives at
> https://archive.midrange.com/rpg400-l.
>
> Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.
>
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.
Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.