bdfd1m11Database Administration

Creating C Structures for Files with Existing DSECT Definitions

To allow a C program to access a file, create a C structure that reflects the LREC definitions in an existing DSECT. Figure 42 shows an example of the LREC definitions for the IR71DF file and a C structure that allows a C program to access the file.

Figure 42. C Structure for a File with Existing DSECT Definitions

**********************************************************************
*                     IR71DF DSECT Definitions                       *
**********************************************************************
**********************************************************************
*        STANDARD TPFDB HEADER                                       *
**********************************************************************
IR71HDR&CG1 DS  CL16         STANDARD FILE HEADER
            DS  CL10         STANDARD TPFDB HEADER
IR71VAR&CG1 EQU *            START OF VARIABLE USER-AREA
IR71HDL&CG1 EQU IR71VAR&CG1-IR71HDR&CG1  HEADER-LENGTH UP TO IR
            ORG IR71HDR&CG1
IR71REC&CG1 DS  0CL1         1ST RECORD START (1=VARIABLE,ELSE
IR71SIZ&CG1 DS  H            SIZE OF LOGICAL RECORD
IR71KEY&CG1 DS  X            LOGICAL RECORD IDENTIFIER
         AIF   ('&IR71DF1' EQ '1').KEYEQ  GO IF NOT FIRST ISSUE
***********************************************************************
*        EQUATE OF LOGICAL RECORD KEYS (KEY AND LENGTH)               *
***********************************************************************
#IR71K80 EQU   X'80'         LOGICAL RECORD KEY X'80'
#IR71L80 EQU  IR71E80&CG1-IR71REC&CG1  LENGTH OF LOGICAL RECORD X'80'
&IR71DF1 SETB  (1)           INDICATE 1ST TIME THROUGH
.KEYEQ   ANOP
IR71ORG&CG1 EQU *            START OF LOGICAL RECORD DESCRIPTION
***********************************************************************
*        DESCRIPTION OF  F I R S T  LOGICAL RECORD TYPE               *
***********************************************************************
IR71A80&CG1 DS  0CL25        KEYAREA
IR71AK&CG1  DS  CL25         "A" KEY
IR71AL&CG1  DS  CL1          ALGORITHM BYTE
IR71TXT&CG1 DS  0CL25        FIXED TEXT
IR71DAT&CG1 DS  CL23         FIXED DATA
IR71RCN&CG1 DS  CL2          SEQUENTIAL RECORD NUMBER
IR71E80&CG1 EQU *            END OF LOGICAL RECORD WITH KEY = X'80'
         ORG IR71ORG&CG1
 
 
 
/**********************************************************************/
/*              IR71DF File C Structure Definitions                   */
/**********************************************************************/
_Packed struct ir71df
{
  short   ir71siz;                         /* Size of the record      */
  dft_pky ir71key;                         /* Primary key             */
  char    ir71ak[25];                      /* "A" key                 */
  char    ir71al;                          /* Algorithm byte          */
  char    ir71dat[23];                     /* Fixed data              */
  short   ir71rcn;                         /* Record sequence number  */
};
/**********************************************************************/
/*                  Miscellaneous Equates                             */
/**********************************************************************/
#define _IR71DFI  "\xB0\x71"
#define _IR71K80  0x80
#define _IR71L80  (sizeof(struct ir71df))