Loading...
Select Version
&pagelevel(4)&pagelevel
Definitionen und Makros für den Satzzugriffs-Kontrollblock EDTAMCB
:
/* ********************************************************************* ** common typedefs ********************************************************************* */ #ifndef IEDT_TYPES typedef unsigned char iedbyte; typedef unsigned short iedshort; typedef unsigned long iedlong; typedef unsigned short iedutf16; #define IEDT_TYPES #endif /* ********************************************************************* ** IEDAMCB parameter block V16 ********************************************************************* */ typedef struct IEDAMCB_v16_mdl { /* interface identifier structure */ #pragma aligned 4 iedshort unit; /* function unit number : 66 */ iedbyte function; /* function number : 0 */ iedbyte version; /* interface version : 1 */ /* returncode unused, will be returned in control block IEDGLCB */ iedlong rc_nbr; /* transfer mode flag byte */ union { struct { iedbyte not_used_1:5; /* not used */ iedbyte locate:1; /* locate mode */ iedbyte not_used_2:2; /* not used */ } mode_bits; iedbyte mode_byte; /* mode byte */ } mode_flag;
/* flag byte */ union { struct { iedbyte not_used:6; /* not used */ iedbyte inh_set_modify:1; /* inhibit setting modify flag */ iedbyte ign_mark13:1; /* ignore mark 13 */ } flag_bits; iedbyte flag_byte; } flag; /* reserve */ iedbyte reserve2[2]; /* input parameters */ iedbyte filename[8]; /* workfile */ long displacement; /* displacement */ iedshort length_key1; /* length of key1 */ iedshort length_key2; /* length of key2 */ /* input parameters (only in move mode) */ iedshort length_key_outbuffer; /* length of key output buffer */ iedshort length_rec_outbuffer; /* length of rec output buffer */ /* input/output parameters */ iedshort length_key; /* length of key */ iedshort length_rec; /* length of record */ /* marks */ union { iedshort mark_field; struct { union { iedbyte mark2; /* upper marks */ struct { iedbyte mark_15:1; /* mark 15 */ iedbyte mark_14:1; /* mark 14 */ iedbyte mark_13:1; /* mark 13 */ iedbyte nouse_1:1; /* not used */ iedbyte nouse_2:1; /* not used */ iedbyte nouse_3:1; /* not used */ iedbyte mark_9:1; /* mark 9 */ iedbyte mark_8:1; /* mark 8 */ } mark2_bits; } upper_marks; union { iedbyte mark1; /* lower marks */ struct { iedbyte mark_7:1; /* mark 7 */
iedbyte mark_6:1; /* mark 6 */ iedbyte mark_5:1; /* mark 5 */ iedbyte mark_4:1; /* mark 4 */ iedbyte mark_3:1; /* mark 3 */ iedbyte mark_2:1; /* mark 2 */ iedbyte mark_1:1; /* mark 1 */ iedbyte nouse_4:1; /* not used */ } mark1_bits; } lower_marks; } mark_bytes; } marks; /* reserve */ iedbyte reserve[2]; } iedamcb_v16; /* ********************************************************************* ** IEDAMCB parameter block V17 ********************************************************************* */ typedef struct IEDAMCB_v17_mdl { /* interface identifier structure */ #pragma aligned 4 iedshort unit; /* function unit number : 66 */ iedbyte function; /* function number : 0 */ iedbyte version; /* interface version : 2 */ /* returncode unused, will be returned in control block IEDGLCB */ iedlong rc_nbr; /* not used */ iedbyte reserve1; /* flag byte */ union { struct { iedbyte not_used:6; /* not used */ iedbyte inh_set_modify:1; /* inhibit setting modify flag */ iedbyte ign_mark13:1; /* ignore mark 13 */ } flag_bits; iedbyte flag_byte; } flag;
/* reserve */ iedbyte reserve2[2]; /* input parameters */ iedbyte filename[8]; /* workfile */ long displacement; /* displacement */ iedshort length_key1; /* length of key1 */ iedshort length_key2; /* length of key2 */ /* input parameters */ iedshort length_key_outbuffer; /* length of key output buffer */ iedshort length_rec_outbuffer; /* length of rec output buffer */ /* input/output parameters */ iedshort length_key; /* length of key */ iedshort length_rec; /* length of record */ /* marks */ union { iedshort mark_field; struct { union { iedbyte mark2; /* upper marks */ struct { iedbyte mark_15:1; /* mark 15 */ iedbyte mark_14:1; /* mark 14 */ iedbyte mark_13:1; /* mark 13 */ iedbyte nouse_1:1; /* not used */ iedbyte nouse_2:1; /* not used */ iedbyte nouse_3:1; /* not used */ iedbyte mark_9:1; /* mark 9 */ iedbyte mark_8:1; /* mark 8 */ } mark2_bits; } upper_marks; union { iedbyte mark1; /* lower marks */ struct { iedbyte mark_7:1; /* mark 7 */ iedbyte mark_6:1; /* mark 6 */ iedbyte mark_5:1; /* mark 5 */ iedbyte mark_4:1; /* mark 4 */ iedbyte mark_3:1; /* mark 3 */ iedbyte mark_2:1; /* mark 2 */ iedbyte mark_1:1; /* mark 1 */ iedbyte nouse_4:1; /* not used */ } mark1_bits; } lower_marks; } mark_bytes;
} marks; /* reserve */ iedbyte reserve[2]; } iedamcb_v17; /* ********************************************************************* ** IEDAMCB parameter block default ********************************************************************* */ #ifdef EDT_V17 typedef iedamcb_v17 iedamcb; #define IEDAMCB_mdl IEDAMCB_v17_mdl #else typedef iedamcb_v16 iedamcb; #define IEDAMCB_mdl IEDAMCB_v16_mdl #endif /* ********************************************************************* ** macros for initialization, access, and modification ********************************************************************* */ #define IEDAMCB_UNIT_66 66 #define IEDAMCB_FUNCT_0 0 #define IEDAMCB_VERS_1 1 #define IEDAMCB_VERS_2 2 #define IEDAMCB_INIT_V16 { 66,0,1,0,{0},{0},{0}," ",0,8,8,8,0,8, } #define IEDAMCB_INIT_V17 { 66,0,2,0,0,{0},{0}," ",0,8,8,8,0,8, } #ifdef EDT_V17 #define IEDAMCB_INIT IEDAMCB_INIT_V17 #define IEDAMCB_VERS_STD IEDAMCB_VERS_2 #else #define IEDAMCB_INIT IEDAMCB_INIT_V16 #define IEDAMCB_VERS_STD IEDAMCB_VERS_1 #endif
#define IEDAMCB_MOD_VERS(p,v) (p).version = v #define IEDAMCB_MOD_IFID(p,u,f,v) \ (p).unit = u, (p).function = f, (p).version = v #define IEDAMCB_SET_NO_MARKS(p) (p).marks.mark_field = 0 #define MARK_1(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_1 #define MARK_2(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_2 #define MARK_3(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_3 #define MARK_4(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_4 #define MARK_5(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_5 #define MARK_6(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_6 #define MARK_7(p) (p).marks.mark_bytes.lower_marks.mark1_bits.mark_7 #define MARK_8(p) (p).marks.mark_bytes.upper_marks.mark2_bits.mark_8 #define MARK_9(p) (p).marks.mark_bytes.upper_marks.mark2_bits.mark_9 #define MARK_13(p) (p).marks.mark_bytes.upper_marks.mark2_bits.mark_13 #define MARK_14(p) (p).marks.mark_bytes.upper_marks.mark2_bits.mark_14 #define MARK_15(p) (p).marks.mark_bytes.upper_marks.mark2_bits.mark_15