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



Unless declared as STATIC all variables within a subprocedure are dynamic and basically go away as soon as the subprocedure returns. I'm guessing this is the root cause of your problem.

P.S. For future use you might take a look at my Open Access IFS writer which would have allowed you to just use regular RPG I/O operations to crate the IFS file. See http://ibmsystemsmag.com/ibmi/developer/rpg/open-access-templates/ <http://ibmsystemsmag.com/ibmi/developer/rpg/open-access-templates/> If you were to clean that sample up to meet your own requirements/standards then creating IFS files in the future is as simple as writing any other disk file.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Dec 18, 2018, at 10:10 AM, Buzz Fenner <bfenner@xxxxxxxxxxxxxxxx> wrote:

All,

Pardon me if this sort of drags on; I figure when I get (or figure out) the answer to this it'll be a great teaching moment.

I have an RPGIV program that reads invoices and writes checks; a logic cycle program breaking on vendor number. Simple enough. It needed to be modified to produce a text file that our bank will use to prevent check fraud (we got hit recently).

I've used Scott Klement's wrappers (i.e. "RPG And the IFS") to read/write to the IFS and never had a problem - they're wonderful. I convert the source to ILE-RPG, get it into freeform, and remove the logic cycle processing. The code that executed on the vendor break I put into a local subprocedure.

However, after executing the program, the text file on the IFS had only one record in it, which corresponded to the last vendor in the input file. I put it into debug to prove the write statement in the procedure executed for each vendor break. Spent days trying to figure it out to no avail. In an act of desperation, I tested putting the code into a subroutine and moved the local declarations back into the main procedure. It worked like a charm; all records were written. It was as if when the code was in a subprocedure, all the writes were stomping on the data that was already there with the next write to the text file overwriting what was written previously.

So, what's the explanation for the difference?

--
Buzz Fenner, Analyst/Systems Administrator
+1 (870) 930.3374 bfenner@xxxxxxxxxxxxxxxx<mailto:bfenner@xxxxxxxxxxxxxxxx>

City Water and Light of Jonesboro
Office: +1 (870) 935.5581 / Fax: +1 (870) 930.3301
Physical: 400 East Monroe Ave., Jonesboro, AR 72401
Mailing: PO Box 1289, Jonesboro, AR 72403-1289

This e-mail message may contain confidential or legally privileged information and is intended only for the use of the intended recipient(s). Any unauthorized disclosure, dissemination, distribution, copying or the taking of any action in reliance on the information herein is prohibited. E-mails are not secure and cannot be guaranteed to be error free as they can be intercepted, amended, or contain viruses. Anyone who communicates with us by e-mail is deemed to have accepted these risks. City Water and Light of Jonesboro is not responsible for errors or omissions in this message and denies any responsibility for any damage arising from the use of e-mail. Any opinion and other statement contained in this message and any attachment are solely those of the author and do not necessarily represent those of the company.



________________________________

This electronic mail transmission may contain confidential or privileged information. If you believe that you have received this message in error, please notify the sender by reply transmission and delete the message without copying or disclosing it.
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


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.