Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

iedglcb.h

&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;