Re: Declaring an external printer file

Charles Wilt <[email protected]>
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <CAJ=Tnc6MyVFUi2_7r9HMoSwjEu8AyMzMRynPURrsPOZzALytRA@mail.gmail.com>
I'm familiar with ON-EXIT...

It was the use of a global I/O spec via USROPN and a locally defined f-spec
that was new.

Charles

On Tue, Aug 19, 2025 at 10:15 AM Daniel Gross <[email protected]> wrote:

> 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.
>
>
-- 
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.
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.