×
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.
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
As an Amazon Associate we earn from qualifying purchases.