Loading...
Select Version
&pagelevel(4)&pagelevel
Definitions and macros for the record access control block 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