Loading...
Select Version
&pagelevel(4)&pagelevel
Definitionen und Makros für den globalen Kontrollblock EDTGLCB
und Definition von symbolischen Konstanten für die Returncodes:
/* ********************************************************************* ** 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 /* ********************************************************************* ** IEDGLCB parameter block V16 ********************************************************************* */ typedef struct IEDGLCB_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 structure */ union { struct { struct { iedbyte subcode2; iedbyte subcode1; } subcode; union { iedshort maincode; struct { iedbyte maincode2; iedbyte maincode1;
} main_returncode; } mc; } structured_rc; iedlong rc_nbr; /* general return code */ } rc; /* info size or displacement of invalid command */ union { iedlong memo_size; /* information of memory size */ iedlong displ_to_cmd; /* displacement of invalid command */ } size_or_displacement; /* return message field */ union { struct { iedshort rmsgl; /* message length */ iedbyte rmsgf[80]; /* message field */ } structured_msg; iedbyte rmsg[82]; /* return message */ } return_message; /* code of sending key */ iedbyte key_code; /* indicator byte */ struct { iedbyte not_used_1:1; /* not used */ iedbyte not_used_2:1; /* not used */ iedbyte reorg_allowed:1; /* reorganisation allowed */ iedbyte not_used_3:1; /* not used */ iedbyte stxit_allowed:1; /* EDT STXIT allowed */ iedbyte data_initiated:1; /* EDT data initiated */ iedbyte data_add_valid:1; /* EDT data addr. valid */ iedbyte entry_add_valid:1; /* EDT entry addr. valid */ } indicator; /* EDT entry address */ void *EDT_entry; /* EDT data address */ void *EDT_data; /* name of actual workfile */ iedbyte filename[8];
/* user parameter 1 */ union { iedbyte user_param1_char[4]; void *user_param1_pointer; } user_param1; /* user parameter 2 */ union { iedbyte user_param2_char[4]; void *user_param2_pointer; } user_param2; /* user parameter 3 */ union { iedbyte user_param3_char[4]; void *user_param3_pointer; } user_param3; } iedglcb_v16; /* ********************************************************************* ** IEDGLCB parameter block V17 ********************************************************************* */ typedef struct IEDGLCB_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 structure */ union { struct { struct { iedbyte subcode2; iedbyte subcode1; } subcode; union { iedshort maincode; struct { iedbyte maincode2; iedbyte maincode1; } main_returncode; } mc;
} structured_rc; iedlong rc_nbr; /* general return code */ } rc; /* info size or displacement of invalid command */ union { iedlong memo_size; /* information of memory size */ iedlong displ_to_cmd; /* displacement of invalid command */ } size_or_displacement; /* return message field */ union { struct { iedshort rmsgl; /* message length */ iedbyte rmsgf[80]; /* message field */ } structured_msg; iedbyte rmsg[82]; /* return message */ } return_message; /* code of sending key */ iedbyte key_code; /* indicator byte */ struct { iedbyte compatible_format:1; /* compatible/extended format */ iedbyte ilcs_environment:1; /* ILCS environment */ iedbyte not_used_1:1; /* not used */ iedbyte not_used_2:1; /* not used */ iedbyte stxit_allowed:1; /* EDT STXIT allowed */ iedbyte data_initiated:1; /* EDT data initiated */ iedbyte data_add_valid:1; /* EDT data addr. valid */ iedbyte entry_add_valid:1; /* EDT entry addr. valid */ } indicator; /* EDT entry address */ void *EDT_entry; /* EDT data address */ void *EDT_data; /* name of actual workfile */ iedbyte filename[8]; /* user parameter 1 */ union { iedbyte user_param1_char[4]; void *user_param1_pointer; } user_param1;
/* user parameter 2 */ union { iedbyte user_param2_char[4]; void *user_param2_pointer; } user_param2; /* user parameter 3 */ union { iedbyte user_param3_char[4]; void *user_param3_pointer; } user_param3; /* coded character set name for sub programm communication */ iedbyte ccsn[8]; /* indicator byte */ struct { iedbyte comp_mode_running:1; /* compatible/extended format */ iedbyte not_used_3:1; /* not used */ iedbyte not_used_4:1; /* not used */ iedbyte not_used_5:1; /* not used */ iedbyte not_used_6:1; /* not used */ iedbyte not_used_7:1; /* not used */ iedbyte not_used_8:1; /* not used */ iedbyte not_used_9:1; /* not used */ } indicator2; iedbyte reserve[3]; /* reserved */ } iedglcb_v17; /* ********************************************************************* ** IEDGLCB parameter block default ********************************************************************* */ #ifdef EDT_V17 typedef iedglcb_v17 iedglcb; #define IEDGLCB_mdl IEDGLCB_v17_mdl #else typedef iedglcb_v16 iedglcb; #define IEDGLCB_mdl IEDGLCB_v16_mdl #endif
/* ********************************************************************* ** special values in MAINCODE ********************************************************************* */ /* EDT call */ #define IEDGLCBcmd_no_error 0 /* successful processing */ #define IEDGLCBcmd_syntax_error 8 /* syntax error in command */ #define IEDGLCBcmd_runtime_error 12 /* runtime error in command */ #define IEDGLCBcmd_unrec_edt_error 16 /* unrecoverable EDT error */ #define IEDGLCBcmd_unrec_sys_error 20 /* unrecoverable system error */ #define IEDGLCBcmd_unrec_user_error 24 /* unrecoverable user error */ #define IEDGLCBcmd_parameter_error 32 /* parameter error */ #define IEDGLCBcmd_reqm_error 36 /* not enough space available */ #define IEDGLCBcmd_version_error 40 /* version error */ #define IEDGLCBcmd_abnormal_error 44 /* abnormal halt by user */ #define IEDGLCBcmd_compatibility 48 /* V17: compatibility violation */ /* EDT access method */ #define IEDGLCBacc_no_error 0 /* successful processing */ #define IEDGLCBacc_access_error 4 /* access error */ #define IEDGLCBacc_unrec_edt_error 16 /* unrecoverable EDT error */ #define IEDGLCBacc_unrec_sys_error 20 /* unrecoverable system error */ #define IEDGLCBacc_unrec_user_error 24 /* unrecoverable user error */ #define IEDGLCBacc_parameter_error 32 /* parameter error */ #define IEDGLCBacc_reqm_error 36 /* not enough space available */ /* ********************************************************************* ** error classes in SUBCODE1 ********************************************************************* */ /* MAINCODE: IEDGLCBcmd_no_error */ #define IEDGLCBno_error 0 /* successful processing */ #define IEDGLCBhalt 4 /* halt entered */ #define IEDGLCBhalt_text 8 /* halt with text entered */ #define IEDGLCBreturn 12 /* return entered */ #define IEDGLCBreturn_text 16 /* return with text entered */ #define IEDGLCBk1_key 20 /* return with k1 */ #define IEDGLCBignore_command 24 /* only in stmnt filter: */ /* statement to be ignore */ /* MAINCODE: IEDGLCBcmd_parameter_error */ #define IEDGLCBglcb_error 4 /* error in EDTGLCB */ #define IEDGLCBupcb_error 8 /* error in EDTUPCB */ #define IEDGLCBparameter_error 12 /* error in command parameter */
#define IEDGLCBmessage_error 16 /* error in message parameter */ #define IEDGLCBccsn_error 20 /* V17: error in ccsn parameter */ #define IEDGLCBconversion_error 24 /* V17: conversion error */ /* MAINCODE: IEDGLCBcmd_version_error */ #define IEDGLCBstandard_version 0 /* standard version returned */ #define IEDGLCBno_version_returned 4 /* no version returned */ /* MAINCODE: IEDGLCBacc_no_error */ #define IEDGLCBacc_ok 0 /* no errror */ #define IEDGLCBnext_record 4 /* next record returned */ #define IEDGLCBfirst_record 8 /* first record returned */ #define IEDGLCBlast_record 12 /* last record returned */ #define IEDGLCBfile_cleared 16 /* file cleard */ #define IEDGLCBcopy_buffer_cleared 20 /* copy buffer cleard */ /* MAINCODE: IEDGLCBacc_access_error */ #define IEDGLCBput_record_truncated 4 /* put record truncated */ #define IEDGLCBkey_truncated 8 /* key truncated (move mode) */ #define IEDGLCBrecord_truncated 12 /* rec. truncated (move mode) */ #define IEDGLCBfile_empty 16 /* file is empty */ #define IEDGLCBno_marks 20 /* no marks in file */ #define IEDGLCBfile_not_opened 24 /* file not opened */ #define IEDGLCBfile_real_opened 28 /* file real opened (no marks) */ #define IEDGLCBmark_not_found 32 /* mark not found (IEDTPTM) */ #define IEDGLCBkey_error 36 /* key error (IEDTREN) */ #define IEDGLCBmax_line_number 40 /* maximum line number reached */ #define IEDGLCBrenumber_inhibited 44 /* renumber is inhibited */ #define IEDGLCBfile_active 48 /* file is active */ /* MAINCODE: IEDGLCBacc_parameter_error */ #define IEDGLCBacc_glcb_error 4 /* error in EDTGLCB */ #define IEDGLCBacc_amcb_error 8 /* error in EDTAMCB */ #define IEDGLCBfilename_error 12 /* filename error */ #define IEDGLCBacc_function_error 16 /* access function error */ #define IEDGLCBkey_format_error 20 /* error in key format */ #define IEDGLCBkey_length_error 24 /* error on key length */ #define IEDGLCBrecord_length_error 28 /* error on record length */ #define IEDGLCBmode_byte_error 32 /* error in transfer mode */ #define IEDGLCBunit_version_error 36 /* error in version or unit */ #define IEDGLCBacc_ccsn_error 40 /* V17: error in ccsn parameter */ #define IEDGLCBacc_conversion_error 44 /* V17: conversion error */
/* ********************************************************************* ** special values in KEY-CODE ********************************************************************* */ #define IEDGLCBkey_code_DUE 102 /* DUE */ #define IEDGLCBkey_code_F1 91 /* F1 */ #define IEDGLCBkey_code_F2 92 /* F2 */ #define IEDGLCBkey_code_F3 93 /* F3 */ #define IEDGLCBkey_code_K1 83 /* K1 */ /* ********************************************************************* ** macros for initialization, access, and modification ********************************************************************* */ #define IEDGLCB_UNIT_66 66 #define IEDGLCB_FUNCT_0 0 #define IEDGLCB_VERS_1 1 #define IEDGLCB_VERS_2 2 #define IEDGLCB_INIT_V16 \ { 66,0,1,{0},0,{0},0,{0},0,0," ",{0},{" "},{" "} } #define IEDGLCB_INIT_V17 \ { 66,0,2,{0},0,{0},0,{0,1,0,0,0,0,0,0},0,0," ",{0},{" "}, {" "}," ",{0,0,0,0,0,0,0,0},{0,0,0} } #ifdef EDT_V17 #define IEDGLCB_INIT IEDGLCB_INIT_V17 #define IEDGLCB_VERS_STD IEDGLCB_VERS_2 #else #define IEDGLCB_INIT IEDGLCB_INIT_V16 #define IEDGLCB_VERS_STD IEDGLCB_VERS_1 #endif #define IEDGLCB_MOD_VERS(p,v) (p).version = v #define IEDGLCB_MOD_IFID(p,u,f,v) \ (p).unit = u, (p).function = f, (p).version = v #define IEDGLCB_RC_SUBCODE2 rc.structured_rc.subcode.subcode2 #define IEDGLCB_RC_SUBCODE1 rc.structured_rc.subcode.subcode1 #define IEDGLCB_RC_MAINCODE rc.structured_rc.mc.maincode
#define IEDGLCB_RC_MAINCODE2 rc.structured_rc.mc.main_returncode.maincode2 #define IEDGLCB_RC_MAINCODE1 rc.structured_rc.mc.main_returncode.maincode1 #define IEDGLCB_RC_NBR rc.rc_nbr #define IEDGLCB_MOD_RC(p,sc2,sc1,mrc) \ (p).IEDGLCB_RC_SUBCODE2 = sc2, \ (p).IEDGLCB_RC_SUBCODE1 = sc1, \ (p).IEDGLCB_RC_MAINCODE = mrc #define IEDGLCB_RC_NIL -1 #define IEDGLCB_RC_NULL 0 #define IEDGLCB_SET_RC_NIL(p) (p).IEDGLCB_RC_NBR = IEDGLCB_RC_NIL #define IEDGLCB_SET_RC_NULL(p) (p).IEDGLCB_RC_NBR = IEDGLCB_RC_NULL #define IEDGLCB_MSG return_message.structured_msg.rmsgf #define IEDGLCB_MSGL return_message.structured_msg.rmsgl /* ********************************************************************* ** layout of buffers (command, message) ********************************************************************* */ typedef struct IEDBUFF_mdl { iedshort length; /* length including all fields */ iedshort unused; /* unused field */ iedbyte text[1]; /* up to 256 (V16) or 32768 (V17) bytes */ } iedbuff;