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



I appreciate the tips.
The authorities are a requirement of the sister company receiving the file
via ftp - they built an engine to auto process files when received, but it's
a little too dumb to deal with authorities so they require all of the
companies to send a file with 777 auth to their unix system.

Jim

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Scott
Klement
Sent: Thursday, June 16, 2016 5:34 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: how to handle open() of ifs file and checking if busy

Jim,

There are flags named O_SHARE_xxx (where xxx refers to a particular sharing
style) that can be used to 'lock' the file. However, since you aren't using
them in your example, this code will not tell you if a file is "busy". The
way you've coded it it will be perfectly happy to use a file that's in use,
or even deleted, by other jobs.

Here are some suggestions:

1) Please consider using O_CCSID instead of O_CODEPAGE.

2) You are opening/creating a new file, but telling it that the code page is
819. Is the data in your RPG program really already in ASCII?
Assuming this file contains text, please consider using O_TEXTDATA,
O_TEXT_CREAT, and giving it both the program and file CCSID.

3) Instead of hard-coding the file's "mode" (authorities) please consider
using O_INHERITMODE to inherit the authorities. It makes it so much easier
for an administrator to control authorities when they aren't hard-coded in
individual programs!

4) You are giving everyone execute access to the file, which means someone
can try to /run/ it. That might make sense if you're writing something like
a shell script to be run in QShell or PASE, but it could also be a mistake,
so I thought I'd point it out.

-SK



On 6/16/2016 8:21 AM, Jim Franz wrote:
c eval fd = open(%trim(filename):
c O_CREAT+O_WRONLY+O_CODEPAGE:
c S_IRWXO+S_IRWXU+S_IRWXG:
c 819)
c if fd < 0
c callp die('open(): ' + %str(strerror(errno)))
c eval @errflag='Y'
c endif

Where can I find the list of values returned from open() so I can code
for a busy issue?
(This is early 2000's code copied from Scott's samples.

Jim Franz

--
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: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.