.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
*****************************************************
Copyright (c) 2000-2005 SAP AG
SAP Database Technology
 
Release :      Date : 2003-01-15
*****************************************************
modname : VAK81
changed : 2000-11-22
module  : hint_trace_routines
 
Author  : GertG
Created : 2003-01-15
*****************************************************
 
Define  :
 
        PROCEDURE
              a81trace_join_config (
                    VAR transid     : tgg00_TransContext;
                    VAR config      : tak00_join_configuration_arr;
                    cnt             : tsp00_Int2);
 
        PROCEDURE
              a81trace_access_config (
                    VAR transid     : tgg00_TransContext;
                    VAR config      : tak00_access_configuration);
 
&ifdef trace
        PROCEDURE
              a81debug_access_config (
                    debug       : tgg00_Debug;
                    VAR config  : tak00_access_configuration);
 
        PROCEDURE
              a81debug_join_config (
                    debug       : tgg00_Debug;
                    VAR config  : tak00_join_configuration_arr;
                    cnt         : tsp00_Int2);
 
        PROCEDURE
              a81debug_one_join_config (
                    debug       : tgg00_Debug;
                    VAR config  : tak00_join_configuration);
&endif
 
.CM *-END-* define --------------------------------------
***********************************************************
 
Use     :
 
        FROM
              Build_Strategy_2 : VAK71;
 
        VAR
              a71blankline : tsp00_Line;
 
      ------------------------------ 
 
        FROM
              Trace_Help_Procedures : VGG041;
 
        PROCEDURE
              g041line_to_trace (
                    VAR t      : tgg00_TransContext;
                    VAR line   : tsp00_Line);
 
        PROCEDURE
              g041c30_to_trace (
                    VAR t : tgg00_TransContext;
                    msg : tsp00_C30);
 
        PROCEDURE
              g041int4_to_trace (
                    VAR t  : tgg00_TransContext;
                    name   : tsp00_Name;
                    intval : tsp00_Int4);
 
      ------------------------------ 
 
        FROM
              GG_edit_routines : VGG17;
 
        PROCEDURE
              g17sname_to_line (
                    n             : tsp00_Sname;
                    VAR ln_len    : integer;
                    VAR ln        : tsp00_Line);
 
      ------------------------------ 
 
        FROM
              Test_Procedures : VTA01;
 
        PROCEDURE
              t01name (
                    debug : tgg00_Debug;
                    nam   : tsp00_Name);
 
        PROCEDURE
              t01int4 (
                    debug    : tgg00_Debug;
                    nam      : tsp00_Sname;
                    int      : tsp00_Int4);
 
        PROCEDURE
              t01write_line (VAR ln : tsp00_Line);
 
        PROCEDURE
              t01set_bool_debug_or_trace;
 
        PROCEDURE
              t01disable_debug_or_trace;
 
        FUNCTION
              t01trace (debug : tgg00_Debug) : boolean;
 
.CM *-END-* use -----------------------------------------
***********************************************************
 
Synonym :
 
.CM *-END-* synonym -------------------------------------
***********************************************************
.CM -lll-
Code    :
 
 
(*------------------------------*) 
 
PROCEDURE
      a81trace_join_config (
            VAR transid     : tgg00_TransContext;
            VAR config      : tak00_join_configuration_arr;
            cnt             : tsp00_Int2);
 
VAR
      _access_cfg   : tak00_access_configuration;
      _i            : tsp00_Int2;
 
BEGIN
&ifdef trace
t01disable_debug_or_trace;
&endif
g041c30_to_trace( transid, '----- joinconfiguration ------' );
FOR _i := 1 TO cnt DO
    BEGIN
    g041int4_to_trace( transid, 'table number      ', _i );
    ak81trace_join_config_switches( transid, config[_i].cfg_join_switches );
    IF  (( config[_i].cfg_indexno <> 0 ) AND
        ( cj_indexaccess in config[_i].cfg_join_switches ))
    THEN
        g041int4_to_trace( transid, 'given index       ', config[_i].cfg_indexno );
    (*ENDIF*) 
    IF  (( config[_i].cfg_bufsize <> 0 ) AND
        ( cj_predefined_buffer in config[_i].cfg_join_switches ))
    THEN
        g041int4_to_trace( transid, 'buffer size       ', config[_i].cfg_bufsize );
    (*ENDIF*) 
    IF  ( config[_i].cfg_parallel_server <> cak_is_undefined ) 
    THEN
        g041int4_to_trace( transid, 'parallel server   ', config[_i].cfg_parallel_server );
    (*ENDIF*) 
    IF  ( config[_i].cfg_access_switches <> [] )
    THEN
        BEGIN
        _access_cfg.cfg_indexno  := config[_i].cfg_indexno;
        _access_cfg.cfg_switches := config[_i].cfg_access_switches;
        a81trace_access_config( transid, _access_cfg );
        END;
    (*ENDIF*) 
    END;
(*ENDFOR*) 
g041c30_to_trace( transid, '------------------------------' );
&ifdef trace
t01set_bool_debug_or_trace;
&endif
END;
 
(*------------------------------*) 
 
PROCEDURE
      a81trace_access_config (
            VAR transid     : tgg00_TransContext;
            VAR config      : tak00_access_configuration);
 
BEGIN
&ifdef trace
t01disable_debug_or_trace;
&endif
g041c30_to_trace( transid, '-------- configuration -------' );
ak81trace_access_config_switches( transid, config.cfg_switches );
IF  (( config.cfg_indexno <> 0 ) AND ( cs_indexaccess in config.cfg_switches ))
THEN
    g041int4_to_trace( transid, 'given index       ', config.cfg_indexno );
(*ENDIF*) 
g041c30_to_trace( transid, '------------------------------' );
&ifdef trace
t01set_bool_debug_or_trace;
&endif
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak81trace_join_config_switches (
            VAR transid     : tgg00_TransContext;
            VAR config      : tak00_join_config_switches);
 
VAR
      _ln           : tsp00_Line;
      _ln_len       : integer;
      _first_entry  : boolean;
 
BEGIN
&ifdef trace
t01disable_debug_or_trace;
&endif
_first_entry := true;
(**************************************)
(* indexaccess, keyaccess, noaccesspath *)
_ln           := a71blankline;
_ln_len       := 0;
IF  ( cj_indexaccess in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'indexaccess ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cj_keyaccess in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'keyaccess   ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cj_noaccesspath in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'noaccesspath', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cj_predefined_buffer in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'predef buf  ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
&ifdef trace
t01set_bool_debug_or_trace;
&endif
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak81trace_access_config_switches (
            VAR transid     : tgg00_TransContext;
            VAR config      : tak00_access_config_switches);
 
VAR
      _ln           : tsp00_Line;
      _ln_len       : integer;
      _first_entry  : boolean;
 
BEGIN
&ifdef trace
t01disable_debug_or_trace;
&endif
_first_entry := true;
(**************************************)
(* trace, indexaccess, keyaccess, keyscan, indexscan *)
_ln           := a71blankline;
_ln_len       := 0;
IF  ( cs_trace in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'trace       ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_indexaccess in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'indexaccess ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_keyaccess in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'keyaccess   ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_keyscan in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'keyscan     ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_indexscan in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'indexscan   ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* disable_inv_only, check order, count records *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_disable_inv_only in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'dis invonly ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_count_records in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'count record', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* enable merge, build result, fetch result *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_enable_merge in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'enable merge', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_build_result in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'buildresult ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_fetch_result in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'fetchresult ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* L1 strat, L2 strat, L2more strat, L2rnge strat, L2 no optim *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_L1_strategy in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'L1 strat    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_L2_strategy in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'L2 strat    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_L2_more_strategies in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'L2more strat', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_L2_range_strategy in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'L2rnge strat', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_L2_strat_no_optim in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'L2 no optim ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* IN strat, SUBQ strat, ordered join *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_IN_strategy in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'IN strat    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_SUBQ_strategy in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'SUBQ strat  ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_ordered_join in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'ordered join', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* keyrange, indexrange, coordinator_join, operator_join*)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_keyrange in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'key range   ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_indexrange in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'index range ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_coordinator_join in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'coord. join ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_operator_join in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'operat. join', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* pretend_param, unused27            *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_pretend_parameter in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'pretend para', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused27 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused27    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* unused30, unused31, unused32, unused33 *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_unused30 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused30    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused31 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused31    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused32 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused32    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused33 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused33    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
(* unused34, unused35, unused36, unused37 *)
_ln          := a71blankline;
_ln_len      := 0;
IF  ( cs_unused34 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused34    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused35 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused35    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused36 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused36    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
IF  ( cs_unused37 in config )
THEN
    BEGIN
    IF  ( NOT _first_entry )
    THEN
        BEGIN
        _ln[ _ln_len + 1 ] := ',';
        _ln_len := _ln_len + 2;
        END;
    (*ENDIF*) 
    g17sname_to_line( 'unused37    ', _ln_len, _ln );
    _first_entry  := false;
    END;
(*ENDIF*) 
g041line_to_trace( transid, _ln );
_first_entry := true;
(**************************************)
&ifdef trace
t01set_bool_debug_or_trace;
&endif
END;
 
&ifdef trace
(*------------------------------*) 
 
PROCEDURE
      a81debug_join_config (
            debug       : tgg00_Debug;
            VAR config  : tak00_join_configuration_arr;
            cnt         : tsp00_Int2);
 
VAR
      _i            : tsp00_Int2;
 
BEGIN
IF  ( t01trace( debug ) AND ( cnt > 0 ))
THEN
    BEGIN
    t01name( debug, '--- JOINCONFIG ---' );
    FOR _i := 1 TO cnt DO
        BEGIN
        t01int4( ak_sem, 'table number', _i );
        a81debug_one_join_config( debug, config[_i] );
        END;
    (*ENDFOR*) 
    t01name( debug, '------------------' );
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a81debug_one_join_config (
            debug       : tgg00_Debug;
            VAR config  : tak00_join_configuration);
 
VAR
      _access_cfg   : tak00_access_configuration;
 
BEGIN
IF  ( t01trace( debug ) )
THEN
    BEGIN
    ak81debug_join_config_switches( debug, config.cfg_join_switches );
    IF  (( config.cfg_indexno <> 0 ) AND
        ( cj_indexaccess in config.cfg_join_switches ))
    THEN
        t01int4( ak_sem, 'given index ', config.cfg_indexno );
    (*ENDIF*) 
    IF  (( config.cfg_bufsize <> 0 ) AND
        ( cj_predefined_buffer in config.cfg_join_switches ))
    THEN
        t01int4( ak_sem, 'buffer size ', config.cfg_bufsize );
    (*ENDIF*) 
    IF  ( config.cfg_parallel_server <> cak_is_undefined )
    THEN
        t01int4( ak_sem, 'parall serv ', config.cfg_parallel_server );
    (*ENDIF*) 
    IF  ( config.cfg_access_switches <> [] )
    THEN
        BEGIN
        _access_cfg.cfg_indexno  := config.cfg_indexno;
        _access_cfg.cfg_switches := config.cfg_access_switches;
        a81debug_access_config( debug, _access_cfg );
        END;
    (*ENDIF*) 
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a81debug_access_config (
            debug       : tgg00_Debug;
            VAR config  : tak00_access_configuration);
 
BEGIN
IF  ( t01trace( debug ) )
THEN
    BEGIN
    t01name( debug, '----- CONFIG -----' );
    ak81debug_access_config_switches( debug, config.cfg_switches );
    IF  (( config.cfg_indexno <> 0 ) AND ( cs_indexaccess in config.cfg_switches ))
    THEN
        t01int4( debug, 'given index ', config.cfg_indexno );
    (*ENDIF*) 
    t01name( debug, '------------------' );
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak81debug_join_config_switches (
            debug   : tgg00_Debug;
            config  : tak00_join_config_switches);
 
VAR
      _first_entry  : boolean;
      _ln_len       : integer;
      _ln           : tsp00_Line;
 
BEGIN
IF  ( t01trace( debug ) )
THEN
    BEGIN
    _first_entry := true;
    (**************************************)
    (* indexaccess, keyaccess, noaccesspath *)
    _ln           := a71blankline;
    _ln_len       := 0;
    IF  ( cj_indexaccess in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'indexaccess ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cj_keyaccess in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'keyaccess   ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cj_noaccesspath in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'noaccesspath', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cj_predefined_buffer in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'predef buf  ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak81debug_access_config_switches (
            debug   : tgg00_Debug;
            config  : tak00_access_config_switches);
 
VAR
      _first_entry  : boolean;
      _ln_len       : integer;
      _ln           : tsp00_Line;
 
BEGIN
IF  ( t01trace( debug ) )
THEN
    BEGIN
    _first_entry := true;
    (**************************************)
    (* trace, indexaccess, keyaccess, keyscan, indexscan *)
    _ln           := a71blankline;
    _ln_len       := 0;
    IF  ( cs_trace in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'trace       ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_indexaccess in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'indexaccess ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_keyaccess in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'keyaccess   ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_keyscan in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'keyscan     ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_indexscan in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'indexscan   ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* disable_inv_only, check order, count records *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_disable_inv_only in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'dis invonly ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_count_records in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'count record', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* enable merge, build result, fetch result *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_enable_merge in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'enable merge', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_build_result in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'buildresult ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_fetch_result in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'fetchresult ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* L1 strat, L2 strat, L2more strat, L2rnge strat, L2 no optim *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_L1_strategy in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'L1 strat    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_L2_strategy in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'L2 strat    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_L2_more_strategies in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'L2more strat', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_L2_range_strategy in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'L2rnge strat', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_L2_strat_no_optim in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'L2 no optim ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* IN strat, SUBQ strat, ordered join *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_IN_strategy in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'IN strat    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_SUBQ_strategy in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'SUBQ strat  ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_ordered_join in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'ordered join', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* key range, index range, coordinator_join, operator_join  *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_keyrange in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'key range   ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_indexrange in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'index range ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_coordinator_join in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'coord. join ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_operator_join in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'operat. join', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* pretend_param, unused27            *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_pretend_parameter in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'pretend_para', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused27 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused27    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* unused30, unused31, unused32, unused33 *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_unused30 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused30    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused31 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused31    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused32 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused32    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused33 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused33    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    (* unused34, unused35, unused36, unused37 *)
    _ln          := a71blankline;
    _ln_len      := 0;
    IF  ( cs_unused34 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused34    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused35 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused35    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused36 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused36    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    IF  ( cs_unused37 in config )
    THEN
        BEGIN
        IF  ( NOT _first_entry )
        THEN
            BEGIN
            _ln[ _ln_len + 1 ] := ',';
            _ln_len := _ln_len + 2;
            END;
        (*ENDIF*) 
        g17sname_to_line( 'unused37    ', _ln_len, _ln );
        _first_entry  := false;
        END;
    (*ENDIF*) 
    t01write_line( _ln );
    _first_entry := true;
    (**************************************)
    END;
(*ENDIF*) 
END;
&endif

.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
