fldata() behavior

The format of the fldata() function is as follows:
int fldata(FILE *file, char *filename,
fldata_t
*info);

The fldata() function is used to retrieve information about an open stream. The name of the file is returned in filename and other information is returned in the fldata_t structure, shown in Figure 1. Values specific to this category of I/O are shown in the comment beside the structure element. Additional notes pertaining to this category of I/O follow the figure. For more information on the fldata() function, refer to z/OS XL C/C++ Runtime Library Reference.

Figure 1. fldata() structure
struct __fileData {
     unsigned int   __recfmF   :    1, /* always off                  */
                    __recfmV   :    1, /* always off                  */
                    __recfmU   :    1, /* always on                   */
                    __recfmS   :    1, /* always off                  */
                    __recfmBlk :    1, /* always off                  */
                    __recfmASA :    1, /* always off                  */
                    __recfmM   :    1, /* always off                  */
                    __dsorgPO  :    1, /* N/A -- always off           */
                    __dsorgPDSmem : 1, /* N/A -- always off           */
                    __dsorgPDSdir : 1, /* N/A -- always off           */
                    __dsorgPS  :    1, /* N/A -- always off           */
                    __dsorgConcat : 1, /* N/A -- always off           */
                    __dsorgMem :    1, /* N/A -- always off           */
                    __dsorgHiper  : 1, /* N/A -- always off           */
                    __dsorgTemp:    1, /* N/A -- always off           */
                    __dsorgVSAM:    1, /* N/A -- always off           */
                    __dsorgHFS :    1, /* always on                   */
                    __openmode :    2, /* one of:                     */
                                       /* __BINARY                    */
                                       /* __RECORD                    */
                    __modeflag :    4, /* combination of:             */
                                       /* __READ                      */
                                       /* __WRITE                     */
                                       /* __APPEND                    */
                                       /* __UPDATE                    */
                    __dsorgPDSE:    1, /* N/A -- always off           */
                    __reserve2 :    8; /*                             */
     __device_t     __device;          /* __HFS                       */
     unsigned long  __blksize,         /* 0                           */
                    __maxreclen;       /*                             */
     unsigned short __vsamtype;        /* N/A                         */
     unsigned long  __vsamkeylen;      /* N/A                         */
     unsigned long  __vsamRKP;         /* N/A                         */
     char *         __dsname;          /*                             */
     unsigned int   __reserve4;        /*                             */
};
typedef struct __fileData fldata_t;
Notes:
  1. The filename is the same as specified on the fopen() or freopen() function call.
  2. The __maxreclen value is 0 for regular I/O (binary). For record I/O the value is lrecl or the default of 1024 when lrecl is not specified.
  3. The __dsname value is the real POSIX pathname.