Re: Declaring an external printer file
Daniel Gross <[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <[email protected]> |
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 <
>> [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
>>> [email protected]<mailto:[email protected]
>>>
>>> 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: [email protected]
>>> Before posting, please take a moment to review the archives
>>> at https://archive.midrange.com/rpg400-l.
>>>
>>> Please contact [email protected] 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: [email protected]
>> Before posting, please take a moment to review the archives
>> at https://archive.midrange.com/rpg400-l.
>>
>> Please contact [email protected] 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: [email protected]
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/rpg400-l.
>
> Please contact [email protected] 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: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact [email protected] for any subscription related questions.