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.