I do use the access procedure to verify existence of a folder. However, I do
it in C.
Looking at the CL, at first blush, I would *tcat the null character to
&PATHNULTRM and see if that makes a difference.
Cheers,
Troy
-----Original Message-----
From: Glenn Gundermann ; Glenn Gundermann
Sent: Tuesday, April 07, 2015 3:12 PM
To: Midrange Systems Technical Discussion
Subject: CL program to check if folder exists in IFS
Hi all,
Does the access api work for a folder or does it have to be a file?
I was hoping it works for a folder but the information in the IBM Knowledge
Center says a file.
If I pass in a folder name that I know exists in the IFS, -1 is returned,
which means failure. Can I debug the access api to see why?
If access is only for files, what is the best way to check if a folder
exists? Use the open api?
Here's the relevant part of the code I am trying.
DCL VAR(&PATHNULTRM) TYPE(*CHAR) LEN(513) /* Allows +
for path of 512 bytes + extra character for null +
termination. */
DCL VAR(&MODE) TYPE(*CHAR) LEN(4)
DCL VAR(&RTNVAL) TYPE(*INT) /* 0=file exists, +
-1=file does not exist */
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
/* Check if folder for source lib exists. */
/* Call IBM API. */
/* &RTNVAL: 0=file exists, -1=file does not exist. */
CHGVAR VAR(%BIN(&MODE)) VALUE(0) /* Set access mode +
to test if the file exists - F_OK */
CHGVAR VAR(&PATHNULTRM) VALUE('/ARCHIVED_SOURCE/' +
*CAT %TRIM(&SRCLIB) *CAT &NULL)
CALLPRC PRC('access') PARM((&PATHNULTRM) (&MODE)) +
RTNVAL(&RTNVAL)
/* Folder for source lib does not exist so make it. */
IF COND(&RTNVAL = -1) THEN(DO)
CHGVAR VAR(&DIR) VALUE('/ARCHIVED_SOURCE/' *CAT +
%TRIM(&SRCLIB))
MKDIR DIR(&DIR)
ENDDO
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.