#include <cmsio.h> int cmsdfind(struct FILEINFO *info, char *pattern);
cmsdfind
searches for a CMS file whose name matches the pattern
pointed to by pattern
. The pattern is a string of the form
filename filetype filemode, where one or more parts of the file ID
can be an "*"
. For example, "* EXEC A"
is a pattern that
matches all files with filetype EXEC on the A disk. Similarly,
"DATA * C"
is a pattern that matches all files with a filename of DATA
on the C disk. If a match is found, cmsdfind
fills in the
FILEINFO
structure.
You can specify pattern
in any form of the cms
or xed
style that provides a file ID for a CMS disk file. For example,
"cms:*.exec.*"
is a pattern that matches all file IDS with a filetype
of EXEC on any accessed disk.
The header file <cmsio.h>
contains the structure FILEINFO
. This
structure is used for both cmsdfind
and cmsdnext
. The structure
is defined as follows:
struct FILEINFO { char _[22]; /* reserved - do not alter */ char recfm; /* file RECFM */ char _1; int lrecl; /* file LRECL */ int norecs; /* number of records in file */ char name[21]; /* null-terminated fileid */ };
cmsdfind
returns 0 if a match is found or a non-zero value if a
match is not found.
If a match is found, the name
element in the FILEINFO
structure is filled in with the filename, filetype, and filemode of
the matching fileid. The filename and filetype are padded on the right
with blanks to eight characters. All parts of the fileid are in uppercase
letters. The fileid is terminated with a null character.
The recfm
field contains either 'F' or 'V', depending on the RECFM
of the file. The lrecl
field contains the LRECL of the file, and
the norecs
field contains the number of records in the file. Other
file information can be retrieved with the cmsstat
or cmsstate
functions.
FILEINFO
structure are reserved for
subsequent calls to cmsdnext
. This area contains a copy of the
pattern and a pointer to an internal control block. Do not alter this area.
Disk I/O is not permitted between calls to cmsdfind
and
cmsdnext
if the I/O is to the same disk that is being searched by
cmsdfind
and cmsdnext
. You also cannot use cmspid
between cmsdfind
and cmsdnext
if these functions
refer to the same disk. Note that if you run VM/XA or VM/ESA, you can
use cmsffind
and cmsfnext
in place of cmsdfind
and
cmsdnext
to avoid these restrictions.
#include <cmsio.h> int rc; struct FILEINFO info; /* List all files with filename PROFILE. */ rc = cmsdfind(&info,"PROFILE * *"); while (rc == 0) { puts(info.name); rc = cmsdnext(&info); }
cmsdnext
, cmsffind
, opendir
, osdfind
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.