Loading...
Select Version
&pagelevel(4)&pagelevel
Definitions and macros for the global control block EDTGLCB and definition of symbolic constants for the return codes:
/*
*********************************************************************
** 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;