bdfd1m11 | Database Administration |
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))