#include <os.h> int osddinfo(char *ddnm, char dsnm[45], char member[9], char *recfmp, int *lreclp, int *blksizep);
osddinfo
obtains and returns information about the data set
referenced by a particular DDname. The first argument, ddnm
, is
a null-terminated string, specifying the DDname of the data set. Only
a DDname is permitted; results are unpredictable if a member name is provided. The
DDname may be in uppercase or lowercase letters, and leading white space
is not permitted.
The remaining arguments to osddinfo
are pointers that address
areas where the data set information is stored. Any of these pointers
can be NULL
, which causes the corresponding information not to be
stored. Because osddinfo
obtains only the requested information
and some information is time consuming to obtain, you should always
pass NULL
to osddinfo
for any information that you do not
need.
The data set name is stored in a 45-character array that is addressed
by the argument dsnm
. Any trailing blanks are removed from the
name. If the DDname is allocated to something other than a disk data
set, a null (0-length) string is stored in dsnm
.
A PDS member is stored in a 9-character array that is addressed by the
argument member
. If the DDname does not define a PDS member, a
null string is stored.
A number of flags are stored in a single character that is addressed by
the argument recfmp
; the flags describe the record format of the
file. The symbolic values for these flags can be found in the header
file <os.h>
:
RECFM_F
RECFM_V
RECFM_U
RECFM_D
RECFM_T
RECFM_B
RECFM_S
RECFM_A
RECFM_M
Note:
You should test for RECFM_U
before testing for RECFM_F
or
RECFM_V
because the definition of RECFM_U
is
RECFM_U = RECFM_F | RECFM_V
A 0 is stored in *recfmp
if record format information is not
available.
The data set's logical-record length is stored in an integer addressed
by the argument lreclp
. If the logical-record length
is not defined or cannot be obtained, 0 is stored. If the data set is
defined with LRECL=X
, the special value LRECL_X
is stored.
The data set's block size is stored in an integer addressed by
the argument blksizep
. If the block size is not defined or
cannot be obtained, 0 is stored.
If a DD statement is defined as an HFS file, the information normally
returned by osddinfo
does not apply. If the DDname passed to
osddinfo
references an HFS file, no return information is
stored; osddinfo
returns the integer 1. You can call
oeddinfo
for the same DDname to extract information about the HFS
file.
osddinfo
returns 0 if the DDname is defined, 1 if the DDname
references an HFS file, or - 1 if it is not defined.
lrecl
if the file is F
or U
format, or
the lrecl-4
if the file is V format:
#include <os.h> #include <stdlib.h> char recfm; int lrecl; char *buffer; if (osddinfo("SYSIN", NULL, NULL, &recfm, &lrecl, NULL) == 0) if (lrecl != 0 && lrecl != LRECL_X) buffer = malloc(recfm & RECFM_F? lrecl: lrecl - 4); . . .
cmsstat
, fattr
, oeddinfo
, osdsinfo
,
stat
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.