Loading...
Select Version
&pagelevel(4)&pagelevel
Definitionen und Makros für den Unterprogramm-Kontrollblock EDTUPCB
:
/* ********************************************************************* ** 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 /* ********************************************************************* ** IEDUPCB parameter block V16 ********************************************************************* */ typedef struct IEDUPCB_v16_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; /* inhibit flag byte */ union { struct { iedbyte not_used_1:1; /* reserved */ iedbyte no_text_at_exit:1; /* @HALT/@RET <text> */ iedbyte no_edit_only:1; /* @EDIT ONLY */ iedbyte no_edit:1; /* @EDIT */ iedbyte no_user_prog:1; /* @RUN, @USE */ iedbyte no_bkpt:1; /* @SYSTEM */ iedbyte no_cmd:1; /* @SYSTEM <string> */
iedbyte no_exec:1; /* @EXEC/@LOAD */ } bit; iedbyte byte; } inhibit; /* reserve */ iedbyte reserve[3]; } iedupcb_v16; /* ********************************************************************* ** IEDUPCB parameter block V17 ********************************************************************* */ typedef struct IEDUPCB_v17_mdl { /* interface identifier structure */ #pragma aligned 4 iedshort unit; /* function unit number : 66 */ iedbyte function; /* function number : 0 */ iedbyte version; /* interface version : 3 */ /* returncode unused, will be returned in control block IEDGLCB */ iedlong rc_nbr; /* inhibit flag byte */ union { struct { iedbyte no_mode:1; /* @MODE */ iedbyte no_text_at_exit:1; /* @HALT/@RET <text> */ iedbyte no_edit_only:1; /* @EDIT ONLY */ iedbyte no_edit:1; /* @EDIT */ iedbyte no_user_prog:1; /* @RUN, @USE */ iedbyte no_bkpt:1; /* @SYSTEM */ iedbyte no_cmd:1; /* @SYSTEM <string> */ iedbyte no_exec:1; /* @EXEC/@LOAD */ } bit; iedbyte byte; } inhibit; /* reserve */ iedbyte reserve[3]; } iedupcb_v17;
/* ********************************************************************* ** IEDUPCB parameter block default ********************************************************************* */ #ifdef EDT_V17 typedef iedupcb_v17 iedupcb; #define IEDUPCB_mdl IEDUPCB_v17_mdl #else typedef iedupcb_v16 iedupcb; #define IEDUPCB_mdl IEDUPCB_v16_mdl #endif /* ********************************************************************* ** macros for initialization, access, and modification ********************************************************************* */ #define IEDUPCB_UNIT_66 66 #define IEDUPCB_FUNCT_0 0 #define IEDUPCB_VERS_2 2 #define IEDUPCB_VERS_3 3 #define IEDUPCB_INIT_V16 { 66,0,2 } #define IEDUPCB_INIT_V17 { 66,0,3 } #ifdef EDT_V17 #define IEDUPCB_INIT IEDUPCB_INIT_V17 #define IEDUPCB_VERS_STD IEDUPCB_VERS_3 #else #define IEDUPCB_INIT IEDUPCB_INIT_V16 #define IEDUPCB_VERS_STD IEDUPCB_VERS_2 #endif #define IEDUPCB_MOD_VERS(p,v) (p).version = v #define IEDUPCB_MOD_IFID(p,u,f,v) \ (p).unit = u, (p).function = f, (p).version = v #define IEDUPCB_SET_NO_INHIBIT(p) (p).inhibit.byte = 0