.CM  SCRIPT , Version - 1.1 , last edited by barbara
.pa
.ad 8
.bm 8
.fm 4
.bt $Copyright (c) 2000-2005 SAP AG$$Page %$
.tm 12
.hm 6
.hs 3
.TT 1 $SQL$Project Distributed Database System$VIN09$
.tt 2 $$$
.TT 3 $$general-setprocedures$2000-01-07$
***********************************************************
.nf
 
.nf
 
 .nf

    ========== licence begin  GPL
    Copyright (c) 2000-2005 SAP AG

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    ========== licence end
.fo

 
.fo
 
 
.fo
.nf
.sp
MODULE  : general-setprocedures
=========
.sp
Purpose : SQL and other general procedures for SET
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :
 
        PROCEDURE
              i09selectsetparms (
                    i01g      : tin_global_in_vars;
                    is_sysdba : boolean;
                    VAR ok    : boolean);
 
        PROCEDURE
              i09readsetparms (
                    i01g : tin_global_in_vars);
 
        PROCEDURE
              i09storesetparms (
                    i01g       : tin_global_in_vars;
                    VAR stored : boolean);
 
        PROCEDURE
              i09replacesetparms (
                    i01g       : tin_global_in_vars;
                    VAR stored : boolean);
 
        PROCEDURE
              i09mdblang (
                    i01g : tin_global_in_vars);
 
        PROCEDURE
              i09setlang (
                    i01g : tin_global_in_vars);
 
        PROCEDURE
              i09mdbformat (
                    i01g : tin_global_in_vars);
 
        PROCEDURE
              i09setformat (
                    i01g : tin_global_in_vars);
 
        PROCEDURE
              i09getmsg (
                    i01g    : tin_global_in_vars;
                    msg_no  : integer;
                    VAR msg : tin_screenline) ;
 
        PROCEDURE
              i09msgdefault (
                    msg_no  : integer;
                    VAR msg : tin_screenline) ;
 
        PROCEDURE
              i09execute (
                    i01g    : tin_global_in_vars;
                    msg_no  : integer );
 
        PROCEDURE
              i09numeric_value (
                    VAR input   : tin_ls_input_field;
                    VAR val     : tsp00_Int4;
                    VAR csr_pos : tin_ls_position;
                    VAR msg_no  : integer);
 
        PROCEDURE
              i09onoff (
                    i01g         : tin_global_in_vars;
                    VAR input    : tin_ls_input_field;
                    VAR on_off   : boolean;
                    VAR csr_pos  : tin_ls_position;
                    VAR msg_no   : integer);
 
        PROCEDURE
              i09putonoff (
                    i01g         : tin_global_in_vars;
                    on_off       : boolean;
                    VAR s40      : tsp00_C40 );
 
        FUNCTION
              i09minmaxverified (
                    VAR input    : tin_ls_input_field;
                    minval       : integer;
                    maxval       : integer;
                    original     : integer;
                    VAR csr_pos  : tin_ls_position;
                    VAR msg_no   : integer) : tsp00_Int2;
 
        PROCEDURE
              i09upper_input (
                    VAR input  : tin_ls_input_field);
 
        PROCEDURE
              i09itoc40 (
                    val     : tsp00_Int4;
                    VAR s40 : tsp00_C40);
 
        PROCEDURE
              i09ifromc40 (
                    VAR s40    : tsp00_C40;
                    VAR val    : tsp00_Int4);
 
        FUNCTION
              in0930 : tsp00_Int4;
 
.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
 
        FROM
              messages : VIN04;
 
        PROCEDURE
              i04msg (
                    i01g      : tin_global_in_vars;
                    msg_no    : integer;
                    VAR parms : tin_msg_parms;
                    VAR msg   : tin_screenline;
                    VAR msgt  : tin_msg_type);
 
      ------------------------------ 
 
        FROM
              printersets: VIN06;
 
        PROCEDURE
              i06psetins (
                    VAR ok          : boolean );
 
        PROCEDURE
              i06insattr (
                    VAR ok          : boolean );
 
      ------------------------------ 
 
        FROM
              dialog_editor : VIN10 ;
 
        PROCEDURE
              i10info (mode : tin_mode_field;
                    VAR msg : tin_screenline;
                    response : boolean);
 
      ------------------------------ 
 
        FROM
              SQLDB-command-interface : VIN21;
 
        PROCEDURE
              i21switchsession (
                    g_area     : tin_global_in_vars;
                    session_no : integer);
 
        PROCEDURE
              i21dbnoreset (
                    g_area : tin_global_in_vars);
 
        FUNCTION
              i21dbok (
                    g_area : tin_global_in_vars ) : boolean;
 
        PROCEDURE
              i21reset (
                    i01g   : tin_global_in_vars;
                    m_type : tsp1_cmd_mess_type);
 
        PROCEDURE
              i21chnginfo (
                    g_area    : tin_global_in_vars;
                    with_info : boolean);
 
        PROCEDURE
              i21pccmnd (
                    g_area : tin_global_in_vars;
                    c      : char);
 
        PROCEDURE
              i21p1cmnd (
                    i01g  : tin_global_in_vars;
                    VAR s : tsp00_C20;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p2cmnd (
                    i01g  : tin_global_in_vars;
                    VAR s : tsp00_C40;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p3cmnd (
                    i01g  : tin_global_in_vars;
                    VAR s : tin_date_mask_string;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p1string (
                    i01g  : tin_global_in_vars;
                    VAR s : tsp00_C40;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p2string (
                    i01g  : tin_global_in_vars;
                    VAR s : tin_null_string;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p3string (
                    i01g  : tin_global_in_vars;
                    VAR s : tin_sep_string;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p4string (
                    i01g  : tin_global_in_vars;
                    VAR s : tsp00_VFilename;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21p5string (
                    i01g  : tin_global_in_vars;
                    VAR s : tin_date_mask_string;
                    l_s   : tin_natural);
 
        PROCEDURE
              i21repcmnd (
                    g_area : tin_global_in_vars;
                    c      : char);
 
        PROCEDURE
              i21pbarg (
                    g_area  : tin_global_in_vars;
                    VAR arg : tin_language_id;
                    b_pos   : tsp00_Int4;
                    l_arg   : tin_natural;
                    is_null : boolean);
 
        PROCEDURE
              i21finish_part (
                    g_area   : tin_global_in_vars);
 
        PROCEDURE
              i21nextpart_init (
                    g_area       : tin_global_in_vars);
 
        PROCEDURE
              i21request (
                    i01g          : tin_global_in_vars;
                    VAR rq_status : tin_connect_status);
 
        PROCEDURE
              i21receive (
                    i01g           : tin_global_in_vars;
                    VAR rc_status  : tin_connect_status;
                    VAR sqlstate   : tsp00_SqlState;
                    VAR returncode : tsp00_Int2;
                    VAR errorcode  : tsp00_Int4);
 
        PROCEDURE
              i21gparaminfo (
                    i01g      : tin_global_in_vars;
                    info_no   : tin_natural;
                    VAR pi    : tsp1_param_info;
                    VAR found : boolean);
 
        PROCEDURE
              i21gsetval (
                    data_part : tsp1_part_ptr;
                    b_pos     : tsp00_Int4;
                    b_len     : tsp00_Int2;
                    l_val     : tin_natural;
                    VAR val   : tsp00_C40);
 
        PROCEDURE
              i21g2setval (
                    data_part : tsp1_part_ptr;
                    b_pos     : tsp00_Int4;
                    b_len     : tsp00_Int2;
                    l_val     : tin_natural;
                    VAR val   : tin_sep_string);
 
        PROCEDURE
              i21g3setval (
                    data_part : tsp1_part_ptr;
                    b_pos     : tsp00_Int4;
                    b_len     : tsp00_Int2;
                    l_val     : tin_natural;
                    VAR val   : tin_date_mask_string);
 
        PROCEDURE
              i21g4setval (
                    data_part : tsp1_part_ptr;
                    b_pos     : tsp00_Int4;
                    b_len     : tsp00_Int2;
                    l_val     : tin_natural;
                    VAR val   : tsp00_VFilename);
 
        PROCEDURE
              i21g5setval (
                    data_part : tsp1_part_ptr;
                    b_pos     : tsp00_Int4;
                    b_len     : tsp00_Int2;
                    l_val     : tin_natural;
                    VAR val   : tin_null_string);
 
        PROCEDURE
              i21rebuild_session (
                    g_area     : tin_global_in_vars;
                    VAR status : tin_connect_status);
 
      ------------------------------ 
 
        FROM
              Output of Date and Time : VIN41;
 
        PROCEDURE
              i41dparse (
                    VAR mask   : tin_date_mask;
                    VAR error  : integer;
                    VAR errpos : tin_natural);
 
        PROCEDURE
              i41tparse (
                    VAR mask   : tin_date_mask;
                    VAR error  : integer;
                    VAR errpos : tin_natural);
 
        PROCEDURE
              i41tsparse (
                    VAR mask   : tin_date_mask;
                    VAR error  : integer;
                    VAR errpos : tin_natural);
 
      ------------------------------ 
 
        FROM
              Kernel_move_and_fill : VGG101;
 
        PROCEDURE
              SAPDB_PascalForcedFill (
                    size        : tsp00_Int4;
                    m           : tsp00_MoveObjPtr;
                    pos         : tsp00_Int4;
                    len         : tsp00_Int4;
                    fillchar    : char);
 
        PROCEDURE
              SAPDB_PascalForcedMove (
                    source_upb  : tsp00_Int4;
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
        PROCEDURE
              s10mv (
                    source_upb  : tsp00_Int4;       
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;    
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;    
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
      ------------------------------ 
 
        FROM
              Packet_handling : VSP26;
 
        PROCEDURE
              s26find_part (
                    VAR segment  : tsp1_segment;
                    part_kind    : tsp1_part_kind;
                    VAR part_ptr : tsp1_part_ptr);
 
      ------------------------------ 
 
        FROM
              RTE-Extension-30 : VSP30;
 
        FUNCTION
              s30lnr (
                    VAR str : tsp00_C40;
                    val     : char;
                    start   : tsp00_Int4;
                    length  : tsp00_Int4) : tsp00_Int4;
 
        FUNCTION
              s30lnr1 (
                    VAR str : tin_date_mask_string;
                    val     : char;
                    start   : tsp00_Int4;
                    length  : tsp00_Int4) : tsp00_Int4;
&       ifdef WINDOWS
 
      ------------------------------ 
 
        FROM
              messages: VIN03;
 
        PROCEDURE
              i03check_mlanguage (
                    language : tin_language_id;
                    VAR ok   : boolean);
&       endif
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
        PROCEDURE
              i21p3cmnd;
 
              tsp00_C70 tin_date_mask_string
 
        PROCEDURE
              i21p1string;
 
              tsp00_Buf tsp00_C40
 
        PROCEDURE
              i21p2string;
 
              tsp00_Buf tin_null_string
 
        PROCEDURE
              i21p3string;
 
              tsp00_Buf tin_sep_string
 
        PROCEDURE
              i21p4string;
 
              tsp00_Buf tsp00_VFilename
 
        PROCEDURE
              i21p5string;
 
              tsp00_Buf tin_date_mask_string
 
        PROCEDURE
              i21pbarg;
 
              tsp00_Buf tin_language_id
 
        PROCEDURE
              i21gsetval;
 
              tsp00_Buf tsp00_C40
 
        PROCEDURE
              i21g2setval;
 
              tsp00_Buf tin_sep_string
 
        PROCEDURE
              i21g3setval;
 
              tsp00_Buf tin_date_mask_string
 
        PROCEDURE
              i21g4setval;
 
              tsp00_Buf tsp00_VFilename
 
        PROCEDURE
              i21g5setval;
 
              tsp00_Buf tin_null_string
 
        FUNCTION
              s30lnr1;
 
              tsp00_MoveObj tin_date_mask_string
 
        FUNCTION
              s30lnr;
 
              tsp00_MoveObj tsp00_C40
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  :
.sp
.cp 3
Created : 1988-04-25
.sp
.cp 3
.sp
.cp 3
Release :      Date : 2000-01-07
.sp
***********************************************************
.sp
.cp 20
.fo
.oc _/1
Specification:
 
 
.CM *-END-* specification -------------------------------
.sp 2.fo
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
 
Change log :
 
 
1992-08-20 : D.Dittmar
 
        i09boolean_text, i09upper_input not external in INLINK
 
1993-01-29 : M.Rathmann
 
        i09initsetparms deleted
        cin_set_namexx sequence and numbering changed
 
1994-04-11 : M.Rathmann
 
        new set value timestamp added,
        cin_set_namexx numbering changed
 
end change log
 
 
 
.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:
 
.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
 
 
CONST
      default_date_mask      = cin_key_int;
      default_date_ml        = mxin_key_int;
      default_time_mask      = cin_key_int;
      default_time_ml        = mxin_key_int;
      default_timestamp_mask = cin_key_int;
      default_timestamp_ml   = mxin_key_int;
      cin09_cname_username         = 'USERNAME          = ';
      cin09_cname_language         = 'LANGUAGE          = ';
      cin09_cname_null             = 'NULLVALUE         = ';
      cin09_cname_decimal          = 'DECIMALREP        = ';
      cin09_cname_date             = 'DAT               = ';
      cin09_cname_time             = 'TIM               = ';
      cin09_cname_sep              = 'SEP               = ';
      cin09_cname_l_sep            = 'L_SEP             = ';
      cin09_cname_printformat      = 'PRINTFORMAT       = ';
      cin09_cname_copy             = 'COPYVALUE         = ';
      cin09_cname_syseditor        = 'SYSEDITOR         = ';
      cin09_cname_editor           = 'PREFIX            = ';
      cin09_cname_lopres           = 'LO_PRESENTATION   = ';
      cin09_cname_loadprot         = 'LOADPROT          = ';
      cin09_cname_transize         = 'TRANSIZE          = ';
      cin09_cname_yepres           = 'YE_PRESENTATION   = ';
      cin09_cname_lt_pres          = 'LT_PRES           = ';
      cin09_cname_le_pres          = 'LE_PRES           = ';
      cin09_cname_gt_pres          = 'GT_PRES           = ';
      cin09_cname_ge_pres          = 'GE_PRES           = ';
      cin09_cname_eq_pres          = 'EQ_PRES           = ';
      cin09_cname_ne_pres          = 'NE_PRES           = ';
      cin09_cname_not_pres         = 'NOT_PRES          = ';
      cin09_cname_in_pres          = 'IN_PRES           = ';
      cin09_cname_betw_pres        = 'BETW_PRES         = ';
      cin09_cname_sounds_pres      = 'SOUNDS_PRES       = ';
      cin09_cname_delimiter        = 'DELIMITER         = ';
      cin09_cname_fillchar         = 'FILLCHAR          = ';
      cin09_cname_graficchar       = 'GRAFICCHAR        = ';
      cin09_cname_ignore_case      = 'IGNORECASE        = ';
      cin09_cname_actualize_menu   = 'ACTUALIZE         = ';
      cin09_cname_qupres           = 'QU_PRESENTATION   = ';
      cin09_cname_queryprot        = 'QUERYPROT         = ';
      cin09_cname_autoprot         = 'AUTOPROT          = ';
      cin09_cname_plpres           = 'PL_PRESENTATION   = ';
      cin09_cname_plprot           = 'PLPROT            = ';
      cin09_cname_pretty           = 'PRETTY            = ';
      cin09_cname_nesting          = 'NESTING           = ';
      cin09_cname_code_area        = 'DIA_C_AREA        = ';
      cin09_cname_value_area       = 'DIA_V_AREA        = ';
      cin09_cname_dia_version      = 'DIA_VERSION       = ';
      cin09_cname_dia_target_langs = 'DIA_TARGET_LANGS  = ';
      cin09_cname_timestamp        = 'TIMSTMP           = ';
      cin09_cname_bool             = 'BOOL              = ';
      cin09_cname_sqltime          = 'SQLTIME           = ';
      cin09_cname_history          = 'HISTORY           = ';
 
 
(*------------------------------*) 
 
FUNCTION
      in0930 : tsp00_Int4;
 
BEGIN
(* linkcheck function *)
in0930 := 219020723;
END;
 
(*------------------------------*) 
 
PROCEDURE
      i09selectsetparms (
            i01g      : tin_global_in_vars;
            is_sysdba : boolean;
            VAR ok    : boolean);
 
VAR
      rc       : tsp00_Int2;
      timeout  : boolean;
      s20      : tsp00_C20;
      s40      : tsp00_C40;
 
BEGIN
IF  i21dbok (i01g)
THEN
    REPEAT
        i21reset (i01g, sp1m_dbs);
        i21chnginfo (i01g, true);
        s20 := 'SELECT DIRECT       ';
        i21p1cmnd (i01g, s20, 20);
        s20 := cin09_cname_username;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_language;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_null;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_decimal;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_date;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_time;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_sep;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_l_sep;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_printformat;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_copy;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_syseditor;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_editor;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_lopres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_loadprot;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_transize;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_yepres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_lt_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_le_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_gt_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_ge_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_eq_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_ne_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_not_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_in_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_betw_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_sounds_pres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_delimiter;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_fillchar;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_graficchar;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_ignore_case;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_actualize_menu;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_qupres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_queryprot;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_autoprot;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_plpres;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_plprot;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_pretty;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_nesting;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_code_area;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_value_area;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_dia_version;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_dia_target_langs;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_timestamp;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_bool;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_sqltime;
        i21p1cmnd (i01g, s20, 18);
        i21pccmnd (i01g, ',');
        s20 := cin09_cname_history;
        i21p1cmnd (i01g, s20, 18);
        s20 := ' FROM               ';
        i21p1cmnd (i01g, s20, 20);
        s20 := ' SYSDBA.SET_R       ';
        i21p1cmnd (i01g, s20, 20);
        s20 := ' KEY USERNAME =     ';
        i21p1cmnd (i01g, s20, 20);
        IF  is_sysdba
        THEN
            s20 := ' SYSDBA             '
        ELSE
            s20 := ' USER               ';
        (*ENDIF*) 
        i21p1cmnd (i01g, s20, 20);
        s40  := 'WITH LOCK ISOLATION LEVEL 0             ';
        i21p2cmnd (i01g, s40, 40);
        i21finish_part (i01g);
        ex_prepared_command (i01g, ok, timeout, rc);
    UNTIL
        NOT timeout;
    (*ENDREPEAT*) 
(*ENDIF*) 
END; (* i09selectsetparms *)
 
(*------------------------------*) 
 
PROCEDURE
      i09readsetparms (
            i01g : tin_global_in_vars);
 
VAR
      pi            : tsp1_param_info;
      found         : boolean;
      ok            : boolean;
      helpstr       : tsp00_C40;
      helpint       : tsp00_Int4;
      i             : integer;
      error         : integer;
      errpos        : tin_natural;
      data_part_ptr : tsp1_part_ptr;
 
BEGIN
WITH i01g^, sql_ptr^, set_parms DO
    BEGIN
    s26find_part (rcv_packet_ptr^.sp1_segm,
          sp1pk_shortinfo, curr_part_ptr);
    s26find_part (rcv_packet_ptr^.sp1_segm,
          sp1pk_data, data_part_ptr);
    (***********)
    (* Sprache *)
    (***********)
    i21gparaminfo (i01g, cin_set_language, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          3, helpstr);
&   ifndef WINDOWS
    FOR i := 1 TO 3 DO
        language [i] := helpstr [i];
    (*ENDFOR*) 
&   endif
    (************************)
    (* Nullwert-Darstellung *)
    (************************)
    i21gparaminfo (i01g, cin_set_null, pi, found);
    i21g5setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          mxin_null_string, null);
    (**********************)
    (* Booleandarstellung *)
    (**********************)
    i21gparaminfo (i01g, cin_set_boolean, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          2 * mxin_bool_string, helpstr);
    FOR i := 1 TO mxin_bool_string DO
        bool_presentation.truestr [i] := helpstr [i];
    (*ENDFOR*) 
    FOR i := 1 TO mxin_bool_string DO
        bool_presentation.falsestr [i] := helpstr [mxin_bool_string + i];
    (*ENDFOR*) 
    (**********************)
    (* Dezimaldarstellung *)
    (**********************)
    i21gparaminfo (i01g, cin_set_decimal, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          2, helpstr);
    decimal.thousand_token := helpstr [1] ;
    decimal.zero_point := helpstr [2] ;
    (********************)
    (* DATE-Darstellung *)
    (********************)
    i21gparaminfo (i01g, cin_set_date, pi, found);
    i21g3setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          mxin_date_mask_string, date.msk);
    date.mlen := s30lnr1 (date.msk, ' ', 1, mxin_date_mask_string);
    i41dparse (date, error, errpos);
    IF  error <> 0
    THEN
        BEGIN
        date.msk    := default_date_mask;
        date.mlen   := default_date_ml;
        i41dparse (date, error, errpos);
        END;
    (********************)
    (* TIME-Darstellung *)
    (********************)
    (*ENDIF*) 
    i21gparaminfo (i01g, cin_set_time, pi, found);
    i21g3setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          mxin_date_mask_string, time.msk);
    time.mlen := s30lnr1 (time.msk, ' ', 1, mxin_date_mask_string);
    i41tparse (time, error, errpos);
    IF  error <> 0
    THEN
        BEGIN
        time.msk    := default_time_mask;
        time.mlen   := default_time_ml;
        i41tparse (time, error, errpos);
        END;
    (*************************)
    (* TIMESTAMP-Darstellung *)
    (*************************)
    (*ENDIF*) 
    i21gparaminfo (i01g, cin_set_timestamp, pi, found);
    i21g3setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          mxin_date_mask_string, timestamp.msk);
    timestamp.mlen := s30lnr1 (timestamp.msk, ' ',
          1, mxin_date_mask_string);
    i41tsparse (timestamp, error, errpos);
    IF  error <> 0
    THEN
        BEGIN
        timestamp.msk    := default_timestamp_mask;
        timestamp.mlen   := default_timestamp_ml;
        i41tsparse (timestamp, error, errpos);
        END;
    (*************)
    (* Separator *)
    (*************)
    (*ENDIF*) 
    i21gparaminfo (i01g, cin_set_sep, pi, found);
    i21g2setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          mxin_sep_string, sep);
    (*************************)
    (* Laenge des Separators *)
    (*************************)
    i21gparaminfo (i01g, cin_set_l_sep, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, helpint);
    l_sep := helpint;
    (***************)
    (* PRINTFORMAT *)
    (***************)
    i21gparaminfo (i01g, cin_set_printformat, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          18, helpstr);
    FOR i := 1 TO 18 DO
        act_print_name [i] := helpstr [i] ;
    (*ENDFOR*) 
    (*************************)
    (* Anzahl Druckexemplare *)
    (*************************)
    i21gparaminfo (i01g, cin_set_copy, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, helpint);
    copy := helpint;
    (*************)
    (* SYSEDITOR *)
    (*************)
    i21gparaminfo (i01g, cin_set_syseditor, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, syseditor);
    (************************)
    (* Praefix links/rechts *)
    (************************)
    i21gparaminfo (i01g, cin_set_editor, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    numeric_prefix := false;
    editor := prefix_left;
    IF  helpstr = cin_k_right
    THEN
        editor := prefix_right
    ELSE
        IF  helpstr = cin_k_no
        THEN
            editor := no_prefix
        ELSE
            IF  helpstr = cin_k_vax
            THEN
                editor := vax;
            (****************)
            (* LOPRES       *)
            (****************)
            (*ENDIF*) 
        (*ENDIF*) 
    (*ENDIF*) 
    i21gparaminfo (i01g, cin_set_lopres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          18, helpstr);
    FOR i := 1 TO 18 DO
        lopres [i] := helpstr [i] ;
    (*ENDFOR*) 
    (*****************)
    (* LOAD-Protname *)
    (*****************)
    i21gparaminfo (i01g, cin_set_loadprot, pi, found);
    i21g4setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          64, loadprot);
    (***********************)
    (* Transaktionsgroesse *)
    (***********************)
    i21gparaminfo (i01g, cin_set_transize, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, transize);
    (****************)
    (* YEPRES       *)
    (****************)
    i21gparaminfo (i01g, cin_set_yepres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          18, helpstr);
    FOR i := 1 TO 18 DO
        yepres [i] := helpstr [i] ;
    (*ENDFOR*) 
    (******************)
    (* LT-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_lt_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, lt_pres);
    (******************)
    (* LE-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_le_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, le_pres);
    (******************)
    (* GT-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_gt_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, gt_pres);
    (******************)
    (* GE-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_ge_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, ge_pres);
    (******************)
    (* EQ-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_eq_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, eq_pres);
    (******************)
    (* NE-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_ne_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, ne_pres);
    (*******************)
    (* NOT-Darstellung *)
    (*******************)
    i21gparaminfo (i01g, cin_set_not_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, not_pres);
    (******************)
    (* IN-Darstellung *)
    (******************)
    i21gparaminfo (i01g, cin_set_in_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, in_pres);
    (***********************)
    (* BETWEEN-Darstellung *)
    (***********************)
    i21gparaminfo (i01g, cin_set_betw_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, betw_pres);
    (**********************)
    (* SOUNDS-Darstellung *)
    (**********************)
    i21gparaminfo (i01g, cin_set_sounds_pres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, sounds_pres);
    (*************)
    (* Delimiter *)
    (*************)
    i21gparaminfo (i01g, cin_set_delimiter, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          1, helpstr);
    delimiter := helpstr [1] ;
    (************)
    (* Fillchar *)
    (************)
    i21gparaminfo (i01g, cin_set_fillchar, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          1, helpstr);
    fillchar := helpstr [1] ;
    (**************)
    (* Graficchar *)
    (**************)
    i21gparaminfo (i01g, cin_set_graficchar, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          1, helpstr);
    graficchar := helpstr [1] ;
    (************************************)
    (* Gross/Kleinschreibung ignorieren *)
    (************************************)
    i21gparaminfo (i01g, cin_set_ignore_case, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    ignore_case := (helpstr  = cin_k_on40);
    (*********************)
    (* Actualize Ja/Nein *)
    (*********************)
    i21gparaminfo (i01g, cin_set_actualize_menu, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    actualize_menu := (helpstr = cin_k_on40);
    (****************)
    (* QUPRES       *)
    (****************)
    i21gparaminfo (i01g, cin_set_qupres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          18, helpstr);
    FOR i := 1 TO 18 DO
        qupres [i] := helpstr [i] ;
    (*ENDFOR*) 
    (******************)
    (* Query-Protname *)
    (******************)
    i21gparaminfo (i01g, cin_set_queryprot, pi, found);
    i21g4setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          64, queryprot);
    (*******************)
    (* AUTOPROT an/aus *)
    (*******************)
    i21gparaminfo (i01g, cin_set_autoprot, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    autoprot := ( helpstr = cin_k_on40 );
    (****************)
    (* PLPRES       *)
    (****************)
    i21gparaminfo (i01g, cin_set_plpres, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          18, helpstr);
    FOR i := 1 TO 18 DO
        plpres [i] := helpstr [i] ;
    (*ENDFOR*) 
    (******************)
    (* PL-Protname    *)
    (******************)
    i21gparaminfo (i01g, cin_set_plprot, pi, found);
    i21g4setval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          64, plprot);
    (******************)
    (* Pretty Ja/Nein *)
    (******************)
    i21gparaminfo (i01g, cin_set_pretty, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    pretty := (helpstr = cin_k_on40);
    (****************)
    (* Nesting      *)
    (****************)
    i21gparaminfo (i01g, cin_set_nesting, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, helpint);
    nesting := helpint;
    (***********************)
    (* DIALOG Code-Bereich *)
    (***********************)
    i21gparaminfo (i01g, cin_set_code_area, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, helpint);
    code_area := helpint;
    (****************************)
    (* DIALOG Variablen-Bereich *)
    (****************************)
    i21gparaminfo (i01g, cin_set_value_area, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    i09ifromc40 (helpstr, helpint);
    value_area := helpint;
    (***************)
    (* DIA_VERSION*)
    (***************)
    i21gparaminfo (i01g, cin_set_dia_version, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          4, helpstr);
    FOR i := 1 TO 4 DO
        dia_version [i] := helpstr [i] ;
    (*ENDFOR*) 
    (********************)
    (* DIA_TARGET_LANGS *)
    (********************)
    i21gparaminfo (i01g, cin_set_dia_target_langs, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          24, helpstr);
    FOR i := 1 TO 24 DO
        dia_target_langs [i] := helpstr [i] ;
    (*ENDFOR*) 
    (*******************)
    (* SQLTIME an/aus  *)
    (*******************)
    i21gparaminfo (i01g, cin_set_sqltime, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    sqltime := ( helpstr = cin_k_on40 );
    (*******************)
    (* HISTORY an/aus  *)
    (*******************)
    i21gparaminfo (i01g, cin_set_history, pi, found);
    i21gsetval (data_part_ptr, pi.sp1i_bufpos, pi.sp1i_in_out_len - 1,
          40, helpstr);
    history := ( helpstr = cin_k_on40 );
&   ifdef WINDOWS
    i03check_mlanguage (language, ok);
    IF  NOT ok
    THEN
        language := cin_k_eng;
&   endif
    (*ENDIF*) 
    END;
(*ENDWITH*) 
END; (* i09readsetparms *)
 
(*------------------------------*) 
 
PROCEDURE
      i09storesetparms (
            i01g       : tin_global_in_vars;
            VAR stored : boolean);
 
VAR
      ok       : boolean;
      timeout  : boolean;
      rc       : tsp00_Int2;
      i        : integer;
      val      : tsp00_Int4;
      colname  : tsp00_C20;
      s40      : tsp00_C40;
 
BEGIN
WITH i01g^.set_parms DO
    BEGIN
    IF  i21dbok (i01g)
    THEN
        BEGIN
        REPEAT
            i21reset (i01g, sp1m_dbs);
            s40 := 'INSERT                                  ';
            i21p2cmnd (i01g, s40, 40);
            s40 := 'SYSDBA.SET_W                            ';
            i21p2cmnd (i01g, s40, 40);
            s40 := ' SET  USERNAME = USER     ,             ';
            i21p2cmnd (i01g, s40, 29);
            (*********************)
            (* LANGUAGE          *)
            (*********************)
            colname := cin09_cname_language;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO 3 DO
                s40 [i] := language [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, 3);
            (*********************)
            (* NULLVALUE         *)
            (*********************)
            colname := cin09_cname_null;
            i21p1cmnd (i01g, colname, 20);
            i21p2string (i01g, null, 20);
            (*********************)
            (* BOOLVALUE         *)
            (*********************)
            colname := cin09_cname_bool;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxin_bool_string DO
                s40 [i] := bool_presentation.truestr [i];
            (*ENDFOR*) 
            FOR i := 1 TO mxin_bool_string DO
                s40 [mxin_bool_string +i] := bool_presentation.falsestr [i];
            (*ENDFOR*) 
            i21p1string (i01g, s40, 2*mxin_bool_string);
            (*********************)
            (* DECIMALREP        *)
            (*********************)
            colname := cin09_cname_decimal;
            i21p1cmnd (i01g, colname, 20);
            s40 [1] := decimal.thousand_token;
            s40 [2] := decimal.zero_point;
            i21p1string (i01g, s40, 2);
            (*********************)
            (* DAT               *)
            (*********************)
            colname := cin09_cname_date;
            i21p1cmnd (i01g, colname, 20);
            i21p5string (i01g, date.msk, date.mlen);
            (*********************)
            (* TIM               *)
            (*********************)
            colname := cin09_cname_time;
            i21p1cmnd (i01g, colname, 20);
            i21p5string (i01g, time.msk, time.mlen);
            (*********************)
            (* TIMSTMP           *)
            (*********************)
            colname := cin09_cname_timestamp;
            i21p1cmnd (i01g, colname, 20);
            i21p5string (i01g, timestamp.msk, timestamp.mlen);
            (*********************)
            (* SEP               *)
            (*********************)
            colname := cin09_cname_sep;
            i21p1cmnd (i01g, colname, 20);
            i21p3string (i01g, sep, 20);
            (*********************)
            (* L_SEP             *)
            (*********************)
            colname := cin09_cname_l_sep;
            i21p1cmnd (i01g, colname, 20);
            val := l_sep;
            i09itoc40 (val, s40);
            i21p1string (i01g, s40, 40);
            (*********************)
            (* PRINTFORMAT       *)
            (*********************)
            colname := cin09_cname_printformat;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxsp_name DO
                WITH printformat, printerset [act_print] DO
                    s40 [i] := formatname [i] ;
                (*ENDWITH*) 
            (*ENDFOR*) 
            i21p1string (i01g, s40, mxsp_name);
            (*********************)
            (* COPYVALUE         *)
            (*********************)
            colname := cin09_cname_copy;
            i21p1cmnd (i01g, colname, 20);
            val := copy;
            i09itoc40 (val, s40);
            i21p1string (i01g, s40, 40);
            (*********************)
            (* SYSEDITOR         *)
            (*********************)
            colname := cin09_cname_syseditor;
            i21p1cmnd (i01g, colname, 20);
            s40 := syseditor;
            i21p1string (i01g, s40, 40);
            (*********************)
            (* PREFIX            *)
            (*********************)
            colname := cin09_cname_editor;
            i21p1cmnd (i01g, colname, 20);
            CASE editor OF
                prefix_left  :
                    s40 := cin_k_left;
                prefix_right :
                    s40 := cin_k_right;
                no_prefix    :
                    s40 := cin_k_no;
                vax          :
                    s40 := cin_k_vax;
                END;
            (*ENDCASE*) 
            i21p1string (i01g, s40, 40);
            (*********************)
            (* LOPRES            *)
            (*********************)
            colname := cin09_cname_lopres;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxsp_name DO
                s40 [i] := lopres [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, mxsp_name);
            (*********************)
            (* LOADPROT          *)
            (*********************)
            colname := cin09_cname_loadprot;
            i21p1cmnd (i01g, colname, 20);
            i21p4string (i01g, loadprot, VFILENAME_MXSP00);
            (*********************)
            (* TRANSIZE          *)
            (*********************)
            colname := cin09_cname_transize;
            i21p1cmnd (i01g, colname, 20);
            i09itoc40 (transize, s40);
            i21p1string (i01g, s40, 40);
            (*********************)
            (* YEPRES            *)
            (*********************)
            colname := cin09_cname_yepres;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxsp_name DO
                s40 [i] := yepres [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, mxsp_name);
            (*********************)
            (* LT_PRES           *)
            (*********************)
            colname := cin09_cname_lt_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, lt_pres, 40);
            (*********************)
            (* LE_PRES           *)
            (*********************)
            colname := cin09_cname_le_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, le_pres, 40);
            (*********************)
            (* GT_PRES           *)
            (*********************)
            colname := cin09_cname_gt_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, gt_pres, 40);
            (*********************)
            (* GE_PRES           *)
            (*********************)
            colname := cin09_cname_ge_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, ge_pres, 40);
            (*********************)
            (* EQ_PRES           *)
            (*********************)
            colname := cin09_cname_eq_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, eq_pres, 40);
            (*********************)
            (* NE_PRES           *)
            (*********************)
            colname := cin09_cname_ne_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, ne_pres, 40);
            (*********************)
            (* NOT_PRES          *)
            (*********************)
            colname := cin09_cname_not_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, not_pres, 40);
            (*********************)
            (* IN_PRES           *)
            (*********************)
            colname := cin09_cname_in_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, in_pres, 40);
            (*********************)
            (* BETW_PRES         *)
            (*********************)
            colname := cin09_cname_betw_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, betw_pres, 40);
            (*********************)
            (* SOUNDS_PRES       *)
            (*********************)
            colname := cin09_cname_sounds_pres;
            i21p1cmnd (i01g, colname, 20);
            i21p1string (i01g, sounds_pres, 40);
            (*************)
            (* DELIMITER *)
            (*************)
            colname := cin09_cname_delimiter;
            i21p1cmnd (i01g, colname, 20);
            s40 [1] := delimiter;
            i21p1string (i01g, s40, 1);
            (************)
            (* FILLCHAR *)
            (************)
            colname := cin09_cname_fillchar;
            i21p1cmnd (i01g, colname, 20);
            s40 [1] := fillchar;
            i21p1string (i01g, s40, 1);
            (**************)
            (* GRAFICCHAR *)
            (**************)
            colname := cin09_cname_graficchar;
            i21p1cmnd (i01g, colname, 20);
            s40 [1] := graficchar;
            i21p1string (i01g, s40, 1);
            (*********************)
            (* IGNORECASE        *)
            (*********************)
            colname := cin09_cname_ignore_case;
            i21p1cmnd (i01g, colname, 20);
            IF  ignore_case
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (*************)
            (* ACTUALIZE *)
            (*************)
            colname := cin09_cname_actualize_menu;
            i21p1cmnd (i01g, colname, 20);
            IF  actualize_menu
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (*********************)
            (* QUPRES            *)
            (*********************)
            colname := cin09_cname_qupres;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxsp_name DO
                s40 [i] := qupres [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, mxsp_name);
            (*********************)
            (* QUERYPROT         *)
            (*********************)
            colname := cin09_cname_queryprot;
            i21p1cmnd (i01g, colname, 20);
            i21p4string (i01g, queryprot, VFILENAME_MXSP00);
            (*********************)
            (* AUTOPROT          *)
            (*********************)
            colname := cin09_cname_autoprot;
            i21p1cmnd (i01g, colname, 20);
            IF  autoprot
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (*********************)
            (* PLPRES            *)
            (*********************)
            colname := cin09_cname_plpres;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO mxsp_name DO
                s40 [i] := plpres [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, mxsp_name);
            (*********************)
            (* PLPROT            *)
            (*********************)
            colname := cin09_cname_plprot;
            i21p1cmnd (i01g, colname, 20);
            i21p4string (i01g, plprot, VFILENAME_MXSP00);
            (*********************)
            (* PRETTY            *)
            (*********************)
            colname := cin09_cname_pretty;
            i21p1cmnd (i01g, colname, 20);
            IF  pretty
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (*********************)
            (* NESTING           *)
            (*********************)
            colname := cin09_cname_nesting;
            i21p1cmnd (i01g, colname, 20);
            val := nesting;
            i09itoc40 (val, s40);
            i21p1string (i01g, s40, 40);
            (****************************)
            (* DIALOG Code-Bereich      *)
            (****************************)
            colname := cin09_cname_code_area;
            i21p1cmnd (i01g, colname, 20);
            val := code_area;
            i09itoc40 (val, s40);
            i21p1string (i01g, s40, 40);
            (****************************)
            (* DIALOG Variablen_Bereich *)
            (****************************)
            colname := cin09_cname_value_area;
            i21p1cmnd (i01g, colname, 20);
            val := value_area;
            i09itoc40 (val, s40);
            i21p1string (i01g, s40, 40);
            (*********************)
            (* DIA_VERSION       *)
            (*********************)
            colname := cin09_cname_dia_version;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO 4 DO
                s40 [i] := dia_version [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, 4);
            (*********************)
            (* DIA_TARGET_LANGS  *)
            (*********************)
            colname := cin09_cname_dia_target_langs;
            i21p1cmnd (i01g, colname, 20);
            FOR i := 1 TO 24 DO
                s40 [i] := dia_target_langs [i] ;
            (*ENDFOR*) 
            i21p1string (i01g, s40, 24);
            (*********************)
            (* SQLTIME           *)
            (*********************)
            colname := cin09_cname_sqltime;
            i21p1cmnd (i01g, colname, 20);
            IF  sqltime
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (*********************)
            (* HISTORY           *)
            (*********************)
            colname := cin09_cname_history;
            i21p1cmnd (i01g, colname, 20);
            IF  history
            THEN
                s40 := cin_k_on40
            ELSE
                s40 := cin_k_off40;
            (*ENDIF*) 
            i21p1string (i01g, s40, 40);
            (**********************)
            (* End of parameters  *)
            (**********************)
            i21repcmnd (i01g, ' ');
            i21finish_part (i01g);
            ex_prepared_command (i01g, ok, timeout, rc);
        UNTIL
            NOT timeout;
        (*ENDREPEAT*) 
        stored := ok;
        i06insattr (ok);
        stored := stored OR ok;
        i06psetins (ok);
        stored := stored OR ok;
        END;
    (*ENDIF*) 
    END;
(*ENDWITH*) 
END; (* i09storesetparms *)
 
(*------------------------------*) 
 
PROCEDURE
      i09replacesetparms (
            i01g       : tin_global_in_vars;
            VAR stored : boolean);
 
VAR
      rc       : tsp00_Int2;
      ok       : boolean;
      timeout  : boolean;
      s40      : tsp00_C40;
 
BEGIN
IF  i21dbok (i01g)
THEN
    BEGIN
    REPEAT
        i21reset (i01g, sp1m_dbs);
        s40 := 'DELETE SYSDBA.SET_W                     ';
        i21p2cmnd (i01g, s40, 40);
        s40 := ' KEY USERNAME = USER                    ';
        i21p2cmnd (i01g, s40, 40);
        i21finish_part (i01g);
        ex_prepared_command (i01g, ok, timeout, rc);
    UNTIL
        NOT timeout;
    (*ENDREPEAT*) 
    IF  ok OR (rc = 100)
    THEN
        i09storesetparms (i01g, stored)
    ELSE
        stored := false;
    (*ENDIF*) 
    END;
(*ENDIF*) 
END; (* i09replacesetparms *)
 
(*------------------------------*) 
 
PROCEDURE
      i09mdblang (
            i01g : tin_global_in_vars);
 
VAR
      i : integer;
 
BEGIN
WITH i01g^ DO
    FOR i := 1 TO mxin_dbs DO
        BEGIN
        IF  session [i].is_connected
        THEN
            BEGIN
            i21switchsession (i01g, i);
            i09setlang (i01g);
            END;
        (*ENDIF*) 
        END;
    (*ENDFOR*) 
(*ENDWITH*) 
i21dbnoreset (i01g);
END; (* i09mdblang *)
 
(*------------------------------*) 
 
PROCEDURE
      i09setlang (
            i01g : tin_global_in_vars);
 
VAR
      s40         : tsp00_C40;
      ok          : boolean;
      timeout     : boolean;
      rc          : tsp00_Int2;
 
BEGIN
IF  i21dbok (i01g)
THEN
    REPEAT
        i21reset (i01g, sp1m_dbs);
        s40  := 'SET LANGUAGE                            ';
        i21p2cmnd (i01g, s40, 40);
        i21nextpart_init (i01g);
        i21pbarg (i01g, i01g^.set_parms.language, 1, 3, false);
        i21finish_part (i01g);
        ex_prepared_command (i01g, ok, timeout, rc);
    UNTIL
        NOT timeout;
    (*ENDREPEAT*) 
(*ENDIF*) 
END; (* i09setlang *)
 
(*------------------------------*) 
 
PROCEDURE
      i09mdbformat (
            i01g : tin_global_in_vars);
 
VAR
      i : integer;
 
BEGIN
WITH i01g^ DO
    FOR i := 1 TO mxin_dbs DO
        BEGIN
        IF  session [i].is_connected
        THEN
            BEGIN
            i21switchsession (i01g, i);
            i09setformat (i01g);
            END;
        (*ENDIF*) 
        END;
    (*ENDFOR*) 
(*ENDWITH*) 
i21dbnoreset (i01g);
END; (* i09mdbformat *)
 
(*------------------------------*) 
 
PROCEDURE
      i09setformat (
            i01g : tin_global_in_vars);
 
VAR
      s40         : tsp00_C40;
      format      : tin_date_mask_string;
      len         : integer;
      rc          : tsp00_Int2;
      ok          : boolean;
      timeout     : boolean;
 
BEGIN
IF  i01g^.set_parms.date.dm_type in [dm_free, dm_int ]
THEN
    BEGIN
    format := cin_key_int;
    len := mxin_key_int;
    END
ELSE
    BEGIN
    format :=  i01g^.set_parms.date.msk;
    len := i01g^.set_parms.date.mlen;
    END;
(*ENDIF*) 
IF  i21dbok (i01g)
THEN
    REPEAT
        i21reset (i01g, sp1m_dbs);
        s40  := 'SET FORMAT                              ';
        i21p2cmnd (i01g, s40, 40);
        i21p3cmnd (i01g, format, len);
        i21finish_part (i01g);
        ex_prepared_command (i01g, ok, timeout, rc);
    UNTIL
        NOT timeout;
    (*ENDREPEAT*) 
(*ENDIF*) 
END; (* i09setformat *)
 
(*------------------------------*) 
 
PROCEDURE
      i09execute (
            i01g    : tin_global_in_vars;
            msg_no  : integer );
 
VAR
      msg        : tin_screenline;
      mode_field : tin_mode_field;
 
BEGIN
i09getmsg (i01g, cin_setmsg_executelabel, msg);
s10mv (mxin_screenline,mxin_mode_field,
      @msg,1,
      @mode_field,1,mxin_mode_field);
IF  msg_no <> cin_setmsg_nomsg
THEN
    i09getmsg (i01g, msg_no, msg)
ELSE
    SAPDB_PascalForcedFill (mxin_screenline, @msg, 1, mxin_screenline, ' ');
(*ENDIF*) 
i10info (mode_field, msg, false);
END;
 
(*------------------------------*) 
 
PROCEDURE
      i09getmsg (
            i01g    : tin_global_in_vars;
            msg_no  : integer;
            VAR msg : tin_screenline) ;
 
VAR
      msgt      : tin_msg_type;
      parms     : tin_msg_parms;
 
BEGIN
parms.length := 0;
i04msg (i01g, msg_no, parms, msg, msgt);
IF  msgt <> long_msg
THEN
    i09msgdefault (msg_no, msg);
(*ENDIF*) 
END; (* i09getmsg *)
 
(*------------------------------*) 
 
PROCEDURE
      i09msgdefault (
            msg_no  : integer;
            VAR msg : tin_screenline) ;
 
VAR
      s40       : tsp00_C40;
 
BEGIN
CASE msg_no OF
    cin_setmsg_go_ahead :
        BEGIN
        s40 := 'OVERWRITE FOR NEW VALUE AND PRESS ANY FU';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,1,40);
        s40 := 'NCTION KEY                              ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,41,39);
        END;
    cin_setmsg_tonly_temp :
        BEGIN
        s40 := 'CHANGES CANNOT BE STORED AND WILL BE LOS';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,1,40);
        s40 := 'T AFTER SESSION END                     ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,41,39);
        END;
    cin_setmsg_bool_answer:
        BEGIN
        s40 := 'ON                                      ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,1,40);
        s40 := 'OFF                                     ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,41,39);
        END;
    cin_setmsg_storesetparms:
        BEGIN
        s40 := 'New parameter will be loaded            ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,1,40);
        s40 := '                                        ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,41,39);
        END;
    cin_setmsg_executelabel:
        BEGIN
        s40 := 'EXECUTE                                 ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,1,40);
        s40 := '                                        ';
        s10mv (40,mxin_screenline,
              @s40,1,
              @msg,41,39);
        END;
    OTHERWISE:
        IF  (msg_no >= 17400) AND (msg_no < 17500)
        THEN
            BEGIN
            s40 := 'INVALID INPUT                           ';
            s10mv (40,mxin_screenline,
                  @s40,1,
                  @msg,1,40);
            s40 := '                                        ';
            s10mv (40,mxin_screenline,
                  @s40,1,
                  @msg,41,39);
            END
        ELSE
            SAPDB_PascalForcedFill (mxin_screenline, @msg, 1, mxin_screenline, ' ');
        (*ENDIF*) 
    END;
(*ENDCASE*) 
END; (* i09msgdefault *)
 
(*------------------------------*) 
 
PROCEDURE
      i09upper_input (
            VAR input  : tin_ls_input_field);
 
VAR
      i          : integer;
 
BEGIN
WITH input DO
    BEGIN
    FOR i := 1 TO len DO
        IF  (buf [i] in ['a'..'i', 'j'..'r', 's'..'z'] )
        THEN
            buf [i] := chr (ord(buf [i] ) + ord('A') - ord('a'));
        (*ENDIF*) 
    (*ENDFOR*) 
    END;
(*ENDWITH*) 
END; (* lower_to_upper *)
 
(*------------------------------*) 
 
PROCEDURE
      i09onoff (
            i01g    : tin_global_in_vars;
            VAR input    : tin_ls_input_field;
            VAR on_off   : boolean;
            VAR csr_pos  : tin_ls_position;
            VAR msg_no   : integer);
 
VAR
      s40      : tsp00_C40;
      msg      : tin_screenline;
      on_text  : tsp00_C40;
      off_text : tsp00_C40;
      j        : integer;
 
BEGIN
i09upper_input (input);
s40  := bsp_c40;
FOR j := 1 TO input.len DO
    s40 [j] := input.buf [j] ;
(*ENDFOR*) 
i09getmsg (i01g, cin_setmsg_bool_answer, msg);
s10mv (mxin_screenline,40,
      @msg,1,
      @on_text,1,40);
s10mv (mxin_screenline,40,
      @msg,41,
      @off_text,1,40);
IF  (s40 <> off_text) AND (s40 <> on_text)
THEN
    BEGIN
    i09msgdefault (cin_setmsg_bool_answer, msg);
    s10mv (mxin_screenline,40,
          @msg,1,
          @on_text,1,40);
    s10mv (mxin_screenline,40,
          @msg,41,
          @off_text,1,40);
    IF  (s40 <> off_text) AND (s40 <> on_text)
    THEN
        BEGIN
        csr_pos := input.fld_pos;
        msg_no := cin_setmsg_invalid_input;
        END
    ELSE
        IF  s40 = off_text
        THEN
            on_off := false
        ELSE
            on_off := true;
        (*ENDIF*) 
    (*ENDIF*) 
    END
ELSE
    IF  s40 = off_text
    THEN
        on_off := false
    ELSE
        on_off := true;
    (*ENDIF*) 
(*ENDIF*) 
END; (* i09onoff *)
 
(*------------------------------*) 
 
PROCEDURE
      i09putonoff (
            i01g    : tin_global_in_vars;
            on_off  : boolean;
            VAR s40 : tsp00_C40 );
 
VAR
      msg      : tin_screenline;
 
BEGIN
i09getmsg (i01g, cin_setmsg_bool_answer, msg);
IF  on_off
THEN
    s10mv (mxin_screenline,40,
          @msg,1,
          @s40,1,40)
ELSE
    s10mv (mxin_screenline,40,
          @msg,41,
          @s40,1,40);
(*ENDIF*) 
END; (* i09onoff *)
 
(*------------------------------*) 
 
FUNCTION
      i09minmaxverified (
            VAR input    : tin_ls_input_field;
            minval       : integer;
            maxval       : integer;
            original     : integer;
            VAR csr_pos  : tin_ls_position;
            VAR msg_no   : integer) : tsp00_Int2;
 
VAR
      old_msg_no : integer;
      tempval    : tsp00_Int4;
 
BEGIN
old_msg_no := msg_no;
i09numeric_value (input, tempval, csr_pos, msg_no);
IF  msg_no = old_msg_no
THEN
    BEGIN
    IF  tempval > maxval
    THEN
        BEGIN
        tempval := maxval;
        msg_no := cin_setmsg_reduced_to_max;
        csr_pos := input.fld_pos;
        END
    ELSE
        IF  tempval < minval
        THEN
            BEGIN
            tempval := minval;
            msg_no  := cin_setmsg_increased_to_min;
            csr_pos := input.fld_pos;
            END;
        (*ENDIF*) 
    (*ENDIF*) 
    END
ELSE
    tempval := original;
(*ENDIF*) 
i09minmaxverified := tempval;
END; (* i09minmaxverified *)
 
(*------------------------------*) 
 
PROCEDURE
      i09numeric_value (
            VAR input   : tin_ls_input_field;
            VAR val     : tsp00_Int4;
            VAR csr_pos : tin_ls_position;
            VAR msg_no  : integer);
 
VAR
      s40 : tsp00_C40;
      j   : integer;
 
BEGIN
IF  is_no_number (input)
THEN
    BEGIN
    msg_no := cin_setmsg_not_numeric;
    csr_pos := input.fld_pos;
    END
ELSE
    BEGIN
    s40  := bsp_c40;
    FOR j := 1 TO input.len DO
        s40 [j] := input.buf [j] ;
    (*ENDFOR*) 
    i09ifromc40 (s40, val);
    END;
(*ENDIF*) 
END; (* i09numeric_value *)
 
(*------------------------------*) 
 
FUNCTION
      is_no_number (
            VAR input  : tin_ls_input_field) : boolean;
 
VAR
      i          : integer;
 
BEGIN
is_no_number := false;
WITH input DO
    BEGIN
    FOR i := 1 TO len DO
        IF  NOT (buf [i] in [' ', '0'..'9'] )
        THEN
            is_no_number := true;
        (*ENDIF*) 
    (*ENDFOR*) 
    END;
(*ENDWITH*) 
END; (* is_no_number *)
 
(*------------------------------*) 
 
PROCEDURE
      i09itoc40 (
            val     : tsp00_Int4;
            VAR s40 : tsp00_C40);
 
VAR
      i    : integer;
      l    : integer;
      help : tsp00_C40;
 
BEGIN
s40  := bsp_c40;
i := 40;
REPEAT
    help [i] := chr (ord ('0') + val MOD 10);
    i := i - 1;
    val := val DIV 10;
UNTIL
    (val = 0) OR (i = 0);
(*ENDREPEAT*) 
l := 40 - i;
FOR i := 1 TO l DO
    s40 [i] := help [i + 40 - l] ;
(*ENDFOR*) 
END; (* i09itoc40 *)
 
(*------------------------------*) 
 
PROCEDURE
      i09ifromc40 (
            VAR s40    : tsp00_C40;
            VAR val    : tsp00_Int4);
 
VAR
      i          : integer;
      l          : integer;
      k          : integer;
      fac        : tsp00_Int4;
 
BEGIN
fac := 1;
val := 0;
k := 1;
WHILE (s40 [k] = ' ') AND (k < 40) DO
    k := k + 1;
(*ENDWHILE*) 
l := s30lnr (s40, ' ', 1, 40);
FOR i := l DOWNTO k DO
    BEGIN
    val := val + fac * (ord (s40 [i] ) - ord ('0'));
    fac := fac * 10;
    END;
(*ENDFOR*) 
END; (* i09ifromc40 *)
 
(*------------------------------*) 
 
PROCEDURE
      ex_prepared_command (
            VAR g_area  : tin_global_in_vars;
            VAR ok      : boolean;
            VAR timeout : boolean;
            VAR r_code  : tsp00_Int2);
 
VAR
      ret         : tin_connect_status;
      sqlstate    : tsp00_SqlState;
      e_code      : tsp00_Int4;
 
BEGIN
ok := false;
timeout := false;
r_code := - 1;
IF  i21dbok (g_area)
THEN
    BEGIN
    ok := true;
    r_code := 0;
    i21request (g_area, ret);
    IF  ret = rc_ok
    THEN
        i21receive (g_area, ret, sqlstate, r_code, e_code);
    (*ENDIF*) 
    IF  ret in [rc_timeout, rc_logon_required ]
    THEN
        BEGIN
        i21rebuild_session (g_area, ret);
        timeout := true;
        END;
    (*ENDIF*) 
    IF  (ret <> rc_ok) OR (r_code <> 0)
    THEN
        ok := false;
    (*ENDIF*) 
    END;
(*ENDIF*) 
END; (* ex_prepared_command *)
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
