.nf
 
 
    ========== licence begin  GPL
    Copyright (C) 2000 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
*****************************************************
Copyright by SAP AG, 2000
SAP Database Technology
 
Release :      Date : 2000-10-11
*****************************************************
modname : VAK35
changed : 2000-10-11
module  : AK_distributor
 
Author  : ElkeZ
Created : 1985-10-16
*****************************************************
 
Purpose :
 
Define  :
 
        PROCEDURE
              a35_asql_statement (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a35aselect_statement (
                    VAR acv      : tak_all_command_glob;
                    StmtStartPos : tsp_int4;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a35state (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a35_vtracen (VAR acv : tak_all_command_glob);
 
.CM *-END-* define --------------------------------------
***********************************************************
 
Use     :
 
        FROM
              Scanner : VAK01;
 
        VAR
              a01kw               : tak_keywordtab;
              a01sysnullkey       : tgg_sysinfokey;
              a01_il_b_identifier : tsp_knl_identifier;
              a01diag_monitor_on  : boolean;
              a01diag_analyze_on  : boolean;
 
        PROCEDURE
              a01_call_put (
                    VAR acv  : tak_all_command_glob;
                    proc     : tak_procs;
                    subproc  : tsp_int2;
                    VAR curr_n : tsp_int2);
 
        PROCEDURE
              a01_init_command (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a01_is_end_symbol (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a01_next_symbol (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a01_get_keyword (
                    VAR acv   : tak_all_command_glob;
                    VAR index : integer;
                    VAR reserved : boolean);
 
        PROCEDURE
              a01_is_odbc_syntax (
                    VAR acv      : tak_all_command_glob;
                    VAR partype  : tak_odbc_partype;
                    VAR functype : tak_odbc_functiontype);
 
        FUNCTION
              a01_eqkey (
                    VAR a      : tak_keyword;
                    sqlmode    : tsp_sqlmode;
                    VAR b      : tsp_moveobj;
                    VAR scv    : tak_scanner_glob) : boolean;
 
        FUNCTION
              a01mandatory_keyword (
                    VAR acv          : tak_all_command_glob;
                    required_keyword : integer) : boolean;
&       ifdef TRACE
 
        PROCEDURE
              a01_write_keywords;
&       endif
 
      ------------------------------ 
 
        FROM
              AK_universal_semantic_tools : VAK06;
 
        PROCEDURE
              a06char_retpart_move (
                    VAR acv     : tak_all_command_glob;
                    moveobj_ptr : tsp_moveobj_ptr;
                    move_len    : tsp_int4);
 
        PROCEDURE
              a06finish_curr_retpart (
                    VAR acv   : tak_all_command_glob;
                    part_kind : tsp1_part_kind;
                    arg_count : tsp_int2);
 
        PROCEDURE
              a06init_curr_retpart (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a06retpart_move (
                    VAR acv     : tak_all_command_glob;
                    moveobj_ptr : tsp_moveobj_ptr;
                    move_len    : tsp_int4);
 
        PROCEDURE
              a06colname_retpart_move (
                    VAR acv     : tak_all_command_glob;
                    moveobj_ptr : tsp_moveobj_ptr;
                    move_len    : tsp_int4;
                    src_codeset : tsp_int2);
 
      ------------------------------ 
 
        FROM
              AK_error_handling : VAK07;
 
        PROCEDURE
              a07_error (
                    VAR a_scv : tak_all_command_glob;
                    errorcode : tgg_basis_error;
                    VAR nod1  : tsp_int2;
                    VAR nod2  : tsp_int2);
 
        PROCEDURE
              a07_b_put_error (
                    VAR acv : tak_all_command_glob;
                    b_err : tgg_basis_error;
                    err_code : tsp_int4);
 
        FUNCTION
              a07_return_code (
                    b_err   : tgg_basis_error;
                    sqlmode : tsp_sqlmode) : tsp_int2;
 
      ------------------------------ 
 
        FROM
              Systeminfo_cache : VAK10;
 
        PROCEDURE
              a10_cache_delete  (
                    VAR acv     : tak_all_command_glob;
                    is_rollback : boolean);
 
        PROCEDURE
              a10dump (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a10_nil_get_sysinfo (
                    VAR acv      : tak_all_command_glob;
                    VAR syskey   : tgg_sysinfokey;
                    dstate       : tak_directory_state;
                    syslen       : tsp_int2;
                    VAR syspoint : tak_sysbufferaddress;
                    VAR b_err    : tgg_basis_error);
 
        PROCEDURE
              a10clean_cache (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a10refresh_cache (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a10shrink_syntax_tree (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a10table_cache_delete (
                    VAR acv     : tak_all_command_glob;
                    VAR tableid : tgg_surrogate);
 
      ------------------------------ 
 
        FROM
              AK_Table : VAK11;
 
        PROCEDURE
              a11_call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Domain : VAK12;
 
        PROCEDURE
              a12_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Alter_Table : VAK13;
 
        PROCEDURE
              a13_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_save_scheme : VAK15;
 
        PROCEDURE
              a15save_restore_catalog (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_SAVE_RESTORE_LOAD : VAK17;
 
        PROCEDURE
              a17call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_View_semantic  : VAK16;
 
        PROCEDURE
              a16_call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_exist_rename_Table   : VAK18;
 
        PROCEDURE
              a18_call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_DDL_Syntax : VAK20;
 
        PROCEDURE
              a20aalter_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20acomment_statement (
                    VAR acv           : tak_all_command_glob;
                    VAR put_node      : tsp_int2);
 
        PROCEDURE
              a20acreate_statement (
                    VAR acv         : tak_all_command_glob;
                    is_splitted_cmd : boolean;
                    VAR put_node    : tsp_int2);
 
        PROCEDURE
              a20adiagnose_drop_file_statement(VAR acv : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20adrop_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20agrant_revoke_statement (
                    VAR acv         : tak_all_command_glob;
                    is_splitted_cmd : boolean;
                    VAR put_node    : tsp_int2;
                    kw_index        : integer);
 
        PROCEDURE
              a20check_table_stmt (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20describe (
                    VAR acv      : tak_all_command_glob;
                    kw_index     : integer;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20end_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20incopy_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20_aexist_table (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20_arename_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20_asave_restore (
                    VAR acv      : tak_all_command_glob;
                    kw_index     : integer;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a20_abegin_end_load_stmt (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2;
                    kw_index     : integer);
 
        PROCEDURE
              a20_aload_statement (
                    VAR acv                : tak_all_command_glob;
                    VAR put_node           : tsp_int2);
 
        PROCEDURE
              a20unload_table (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              DBProc_DDL_Syntax : VAK201;
 
        PROCEDURE
              a201call_proc (VAR acv : tak_all_command_glob;
                    expected_odbc_terminator : tak_odbc_partype;
                    resultNameNode : integer;
                    VAR put_node   : tsp_int2);
 
      ------------------------------ 
 
        FROM
              AK_User_Password : VAK21;
 
        PROCEDURE
              a21_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Grant_Revoke  : VAK22;
 
        PROCEDURE
              a22_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Synonym       : VAK23;
 
        PROCEDURE
              a23_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Index         : VAK24;
 
        PROCEDURE
              a24_call_semantic  (
                    VAR acv       : tak_all_command_glob;
                    ignore_errors : boolean);
 
      ------------------------------ 
 
        FROM
              AK_Link : vak25;
 
        PROCEDURE
              a25link_semantic (
                    VAR acv    : tak_all_command_glob;
                    start_node : integer);
 
      ------------------------------ 
 
        FROM
              AK_Comment : VAK26;
 
        PROCEDURE
              a26comment_on (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Syntax_utility : VAK30;
 
        PROCEDURE
              a30diag_oms(VAR acv  : tak_all_command_glob);
 
        PROCEDURE
              a30set_parameter_syntax (
                    VAR acv      :tak_all_command_glob;
                    VAR put_node : tsp_int2 );
 
        PROCEDURE
              a30diag_vtrace_syntax (
                    VAR acv      :tak_all_command_glob;
                    VAR put_node : tsp_int2 );
 
        PROCEDURE
              a30CheckInstance(VAR acv : tak_all_command_glob);
 
        FUNCTION
              a30SetCountDown(VAR acv : tak_all_command_glob) : boolean;
&       ifdef TRACE
 
        PROCEDURE
              a30diag_switch_syntax (
                    VAR acv      :tak_all_command_glob;
                    VAR put_node : tsp_int2);
&       endif
 
      ------------------------------ 
 
        FROM
              AK_Stored_Procedure_DDL : VAK261;
 
        PROCEDURE
              a261proc_handling (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Trigger : VAK262;
 
        PROCEDURE
              a262trigger_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Function : VAK264;
 
        PROCEDURE
              a264function_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_update_statistics : VAK28;
 
        PROCEDURE
              a28update_statistics (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              Kernel_Sink : VAK34;
 
        PROCEDURE
              a34call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              Catalog_Migration_2 : VAK362;
 
        VAR
              a362in_migration : boolean;
 
      ------------------------------ 
 
        FROM
              AK_warm_utility_functions : VAK37;
 
        PROCEDURE
              a37state_get (
                    VAR acv  : tak_all_command_glob;
                    kw_index : integer);
 
        PROCEDURE
              a37state_vtrace (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a37user_command (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_data_dictionary : VAK38;
 
        PROCEDURE
              a38_ausage_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a38_call_semantic  (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_show_syntax : VAK41;
 
        PROCEDURE
              a41_a_check_database (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a41_astart_stop_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a41_show_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Show_statistics   : VAK42;
 
        PROCEDURE
              a42_start_semantic (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a42_check_database (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a42put_running_cmds (
                    VAR acv    : tak_all_command_glob;
                    VAR parsid : tak_parsid);
 
        PROCEDURE
              a42reset_running_cmds (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Connect : VAK51;
 
        PROCEDURE
              a51_aconnect_statement (
                    VAR acv           : tak_all_command_glob;
                    call_from_utility : boolean;
                    VAR put_node      : tsp_int2);
 
        PROCEDURE
              a51_aenable_write_trans (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a51_aset_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a51_acurrent_user  (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a51_aget_code_tables (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a51semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Lock_Commit_Rollback : VAK52;
 
        PROCEDURE
              a52_asavepoint (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a52end_rollback_subtrans (
                    VAR acv           : tak_all_command_glob;
                    VAR subtrans_name : tsp_knl_identifier;
                    m_type            : tgg_message_type);
 
        PROCEDURE
              a52internal_subtrans (VAR acv : tak_all_command_glob);
 
        PROCEDURE
              a52asubtrans_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a52_acommit_rollback_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2;
                    commit       : boolean);
 
        PROCEDURE
              a52_call_semantik (
                    VAR acv : tak_all_command_glob;
                    subproc : tsp_int2);
 
        PROCEDURE
              a52_alock_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2;
                    with_wait_option : boolean);
 
        PROCEDURE
              a52_aunlock_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a52_ex_commit_rollback (
                    VAR acv        : tak_all_command_glob;
                    m_type         : tgg_message_type;
                    n_rel          : boolean;
                    normal_release : boolean);
 
        PROCEDURE
              a52_aforce_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              DML_Help_Procedures : VAK54;
 
        PROCEDURE
              a54_shortinfo_to_varpart (
                    VAR acv   : tak_all_command_glob;
                    store_cmd : boolean;
                    VAR infop : tak_sysbufferaddress);
 
      ------------------------------ 
 
        FROM
              DML_Help_Procedures : VAK542;
 
        FUNCTION
              a542initial_cmd_segm (VAR acv : tak_all_command_glob)
                    :
                    tsp1_segment_ptr;
 
        PROCEDURE
              a542reset_packet (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              diagnose analyze : VAK544;
 
        PROCEDURE
              a544syntax_diag_analyze  (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              diagnose monitor : VAK545;
 
        PROCEDURE
              a545diag_monitor_syntax  (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a545diag_parse_info (
                    VAR acv        : tak_all_command_glob;
                    VAR parsid     : tak_parsid;
                    VAR sel_parsid : tak_parsid);
 
        PROCEDURE
              a545sm_insert (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Insert : VAK56;
 
        PROCEDURE
              a56_ainsert_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a56_insert_statement (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Insert_Select : VAK562;
 
        PROCEDURE
              a562_select_insert (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_Update : VAK57;
 
        PROCEDURE
              a57_aupdate_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2;
                    kw_index     : integer);
 
        PROCEDURE
              a57_update_statement (
                    VAR acv    : tak_all_command_glob;
                    start_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              AK_Delete : VAK58;
 
        PROCEDURE
              a58_adelete_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a58_delete (
                    VAR acv    : tak_all_command_glob;
                    start_node : tsp_int2);
 
        PROCEDURE
              a58atruncate_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              Select_Syntax : VAK60;
 
        PROCEDURE
              a60_aselect_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a60_adeclare (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a60_aexplain_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              Single_Select : VAK62;
 
        PROCEDURE
              a62_direct_ordered_select (
                    VAR acv    : tak_all_command_glob;
                    start_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              Execute_Select_Expression : VAK660;
 
        PROCEDURE
              a660_select (
                    VAR acv   : tak_all_command_glob;
                    startnode : tsp_int2);
 
      ------------------------------ 
 
        FROM
              Resulttable : VAK73;
 
        PROCEDURE
              a73_afetch_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a73_aclose_resulttable (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a73_adescribe_resulttable (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a73_anext_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a73_call_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_string_columns: VAK77;
 
        PROCEDURE
              a77string_col_semantic (VAR acv : tak_all_command_glob);
 
      ------------------------------ 
 
        FROM
              AK_string_columns_syntax: VAK78;
 
        PROCEDURE
              a78af_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2;
                    f_type       : tsp_int2);
 
        PROCEDURE
              a78aopen_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78aclose_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78aread_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78awrite_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78aexpand_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78acopy_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78alength_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78asearch_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
        PROCEDURE
              a78atrunc_column_statement (
                    VAR acv      : tak_all_command_glob;
                    VAR put_node : tsp_int2);
 
      ------------------------------ 
 
        FROM
              filesysteminterface_1 : VBD01;
 
        VAR
              b01niltree_id      : tgg00_FileId;
 
      ------------------------------ 
 
        FROM
              Trace : VBD120;
 
        PROCEDURE
              b120FlushTrace(  TaskId : tsp00_TaskId );
 
      ------------------------------ 
 
        FROM
              task_temp_data_cache : VBD21;
 
        FUNCTION
              b21m_is_select (temp_cache_ptr : tgg00_TempDataCachePtr) : boolean;
 
        PROCEDURE
              b21m_parseid (
                    temp_cache_ptr : tgg00_TempDataCachePtr;
                    VAR parseid : tak_parsid);
 
        PROCEDURE
              b21mp_is_select (
                    temp_cache_ptr : tgg00_TempDataCachePtr;
                    is_select : boolean);
 
        PROCEDURE
              b21m_reset_monitor (
                    temp_cache_ptr : tgg00_TempDataCachePtr;
                    reset_sum : boolean);
 
        PROCEDURE
              b21mp_parseid_put (
                    temp_cache_ptr : tgg00_TempDataCachePtr;
                    VAR parseid : tak_parsid);
 
      ------------------------------ 
 
        FROM
              Configuration_Parameter : VGG01;
 
        VAR
              g01diag_moni_parse_on  : boolean;
              g01newupdstat          : boolean; (* PTS 1118179 *)
 
        PROCEDURE
              g01abort (
                    msg_no     : tsp_int4;
                    msg_label  : tsp_c8;
                    msg_text   : tsp_c24;
                    bad_value  : tsp_int4);
 
        FUNCTION
              g01is_livecache : boolean;
 
      ------------------------------ 
 
        FROM
              RTE_kernel : VEN101;
 
        FUNCTION
              RTEHSS_GetMappingInfo(
                    VAR ownMappingInfoSize : tsp00_Int4;
                    VAR ownMappingInfo     : tsp00_MoveObjPtr) : boolean;
&       IFDEF TRACE
 
      ------------------------------ 
 
        FROM
              Test_Procedures : VTA01;
 
        FUNCTION
              t01trace (debug : tgg00_Debug) : boolean;
 
        PROCEDURE
              t01aptree (
                    layer         : tgg00_Debug;
                    VAR a_ap_tree : tak_ap_max_tree;
                    node_cnt      : integer;
                    hint_node     : tsp_int2);
 
        PROCEDURE
              t01moveobj (
                    level       : tgg00_Debug;
                    VAR buf     : tsp00_MoveObj;
                    pos_start   : tsp00_Int4;
                    pos_end     : tsp00_Int4);
 
        PROCEDURE
              t01int4 (
                    debug    : tgg00_Debug;
                    nam      : tsp00_Sname;
                    int      : tsp00_Int4);
&       ENDIF
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
        PROCEDURE
              b21m_parseid;
 
              tsp00_C12      tak_parsid
 
        PROCEDURE
              s10fil2;
 
              tsp_moveobj tsp_line
 
        PROCEDURE
              t01aptree;
 
              tsp00_MoveObj tak_ap_max_tree
 
        PROCEDURE
              a42put_running_cmds;
 
              tsp_c12 tak_parsid
 
        PROCEDURE
              b21mp_parseid_put;
 
              tsp00_C12 tak_parsid
 
.CM *-END-* synonym -------------------------------------
***********************************************************
.CM -lll-
Code    :
 
 
CONST
      ignore_no_errors = false;
      c_is_rollback    = true;
      c_reset_sum      = true  (* b21m_reset_monitor *);
      c_is_select       = true (* b21mp_is_select *);
 
 
(*------------------------------*) 
 
PROCEDURE
      a35_asql_statement (VAR acv : tak_all_command_glob);
 
CONST
      c_show             = true;
      max_countdatatypes = 1;
      c_splitted_cmd     = true;
 
VAR
      again                 : boolean;
      init_intern_expl      : boolean;
      is_invalid            : boolean;
      make_subtrans         : boolean;
      refresh_catalog       : boolean;
      init_sqlmode          : tsp_sqlmode;
      init_ex_kind          : tak_execution_kind;
      m_init_ddl            : tak_ddl_descriptor;
      put_node              : tsp_int2;
      countfilevers         : integer;
      (* PTS 1000985/1001162 E.Z. *)
      countdatatypes        : integer;
      save_cmd_length       : integer;
      save_data_length      : integer;
      symbindex             : integer;
      subsymbindex          : integer;
      init_costsum          : tsp_int4;
      old_costwarn          : tsp_int4;
      res_kw                : boolean;
      last_cmd_was_select   : boolean;
      pseudo_select         : boolean;
      odbc_partype          : tak_odbc_partype;
      odbc_functype         : tak_odbc_functiontype;
      pp                    : tak_parsid;
 
BEGIN
odbc_partype  := no_odbc;
odbc_functype := odbc_nothing;
make_subtrans := true;
old_costwarn  := acv.a_costwarn_value;
pseudo_select := false;
IF  acv.a_cmd_segm^.sp1c_ignore_costwarning
THEN
    acv.a_costwarn_value := acv.a_costlimit_value;
&ifdef TRACE
(*ENDIF*) 
t01moveobj( ak_syn, acv.a_cmd_part^.sp1p_buf, 1, acv.a_cmd_part^.sp1p_buf_len );
t01int4( ak_sem, 'precomp_info', ord( acv.a_precomp_info_byte ));
&endif
a01_init_command (acv);
(* PTS 1104963 E.Z. *)
acv.a_union_append := false;
acv.a_precomp_info_byte := csp1_p_none;
IF  acv.a_scv.sc_symb = s_leftpar
THEN
    BEGIN
    WHILE ( acv.a_scv.sc_symb = s_leftpar ) DO
        a01_next_symbol(acv);
    (*ENDWHILE*) 
    IF  NOT a01_eqkey (a01kw[ cak_i_select ], acv.a_sqlmode,
        acv.a_cmd_part^.sp1p_buf, acv.a_scv)
    THEN
        a07_b_put_error (acv, e_invalid_command, 1)
    (*ENDIF*) 
    END;
(*ENDIF*) 
a01_get_keyword (acv, symbindex, res_kw);
acv.a_select_node := 0;
is_invalid := acv.a_sqlmode <> sqlm_adabas;
(* PTS 1120378 E.Z. *)
IF  (symbindex <> cak_i_vtrace)    AND
    (* PTS 1106205 E.Z. *)
    (symbindex <> cak_i_ping)      AND
    (symbindex <> cak_i_state)     AND
    (* PTS 1111229 E.Z. *)
    (symbindex <> cak_i_info)
THEN
    BEGIN
    IF  (acv.a_curr_user_name =  a01_il_b_identifier) AND
        (symbindex        <> cak_i_connect)
    THEN
        a07_b_put_error (acv, e_user_not_connected, 1)
    ELSE
        (* PTS 1111575 E.Z. *)
        IF  (acv.a_ex_kind <> only_parsing)
            AND
            (acv.a_ex_kind <> only_syntax)
            AND
            (acv.a_cmd_segm^.sp1c_mass_cmd)
            AND
            ((symbindex = cak_i_delete)  OR
            ( symbindex = cak_i_insert)  OR
            ( symbindex = cak_i_select)  OR
            ( symbindex = cak_i_declare) OR
            ( symbindex = cak_i_append)
            (* PTS 1102325 E.Z. *)
            (* OR ( symbindex = cak_i_update) *)
            )
        THEN
            a07_b_put_error (acv, e_invalid_command, 1)
        ELSE
            IF  (acv.a_dbproc_level + acv.a_trigger_level > 0) AND
                (symbindex = cak_i_connect)
            THEN
                a07_b_put_error (acv, e_invalid_command, 1);
            (*ENDIF*) 
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ( acv.a_return_segm^.sp1r_returncode = 0 )
    THEN
        BEGIN
        IF  acv.a_statement_kind = isql_commands
        THEN
            CASE symbindex OF
                cak_i_alter :
                    acv.a_statement_kind := ialters;
                cak_i_commit :
                    acv.a_statement_kind := icommits;
                cak_i_create :
                    acv.a_statement_kind := icreates;
                cak_i_delete :
                    acv.a_statement_kind := ideletes;
                cak_i_drop :
                    BEGIN
                    (* will be done in vak20 because if drop parseid *)
                    END;
                cak_i_insert :
                    acv.a_statement_kind := iinserts;
                cak_i_lock, cak_i_unlock :
                    acv.a_statement_kind := ilocks;
                cak_i_rollback :
                    acv.a_statement_kind := irollbacks;
                cak_i_select,
                cak_i_declare,
                (* PTS 1111576 E.Z. *)
                cak_i_fetch :
                    acv.a_statement_kind := iselects;
                cak_i_savepoint :
                    IF  acv.a_sqlmode = sqlm_oracle
                    THEN
                        acv.a_statement_kind := ibegin_subtrans
                    ELSE
                        acv.a_statement_kind := icollisions (* no useable value *);
                    (*ENDIF*) 
                (* PTS 1003033 E.Z. *)
                (* PTS 1111576 E.Z. *)
                cak_i_update, cak_i_append :
                    acv.a_statement_kind := iupdates;
                OTHERWISE
                    BEGIN
                    IF  symbindex <> cak_i_subtrans
                    THEN
                        acv.a_statement_kind := icollisions (* no useable value *)
                    (*ENDIF*) 
                    END
                (*acv.a_statement_kind := iload_dbproc_calls;
                      acv.a_statement_kind := itrigger_calls;*)
                END;
            (*ENDCASE*) 
        (*  h.b. 15.09.1994 noch nicht freigegeben *)
        (*ENDIF*) 
        IF  (symbindex = cak_i_no_keyword) AND
            ((acv.a_comp_type = at_odbc) OR (acv.a_comp_type = at_jdbc))
        THEN
            BEGIN
            a01_is_odbc_syntax ( acv, odbc_partype, odbc_functype);
            IF  (odbc_partype <> no_odbc)
                AND (odbc_functype = odbc_call)
            THEN
                symbindex := cak_i_dbproc;
            (*ENDIF*) 
            END;
        (*ENDIF*) 
        CASE symbindex OF
            cak_i_alter :
                BEGIN
                is_invalid := false;
                a20aalter_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level)
                END;
            cak_i_analyze :
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    BEGIN
                    is_invalid := false;
                    a57_aupdate_statement (acv,
                          acv.a_ap_tree^[ 0 ].n_lo_level, symbindex)
                    END
                ELSE
                    is_invalid := true;
                (*ENDIF*) 
            cak_i_append :
                BEGIN
                is_invalid := (acv.a_sqlmode <> sqlm_oracle) AND
                      (acv.a_sqlmode <> sqlm_adabas);
                a57_aupdate_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, symbindex)
                END;
            (* PTS 1111576 E.Z. *)
            cak_i_begin :
                a20_abegin_end_load_stmt  (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, cak_i_save);
            cak_i_beginload :
                BEGIN
                (* PTS 1116801 E.Z. *)
&               ifdef vers80
                is_invalid := true;
&               else
                make_subtrans := false;
                a20_abegin_end_load_stmt (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, symbindex);
&               endif
                END;
            cak_i_check :
                (* PTS 1105700 E.Z. *)
                ak35acheck_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, is_invalid);
            (* PTS 1111576 E.Z. *)
            cak_i_close :
                BEGIN
                is_invalid := false;
                ak35aclose_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_comment :
                BEGIN
                IF  acv.a_sqlmode in [sqlm_db2, sqlm_oracle]
                THEN
                    is_invalid := false;
                (*ENDIF*) 
                a20acomment_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_commit :
                BEGIN
                is_invalid    := false;
                make_subtrans := false;
                a52_acommit_rollback_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, true);
                END;
            cak_i_connect :
                BEGIN
                is_invalid    := false;
                make_subtrans := false;
                (* PTS 1117498 M.Ki. *)
                IF  NOT a362in_migration
                THEN
                    a51_aconnect_statement (acv, false,
                          acv.a_ap_tree^[ 0 ].n_lo_level)
                ELSE
                    a07_b_put_error (acv, e_shutdown, 1);
                (*ENDIF*) 
                END;
            cak_i_copy :
                a78acopy_column_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_create :
                BEGIN
                is_invalid := false;
                a20acreate_statement (acv, NOT c_splitted_cmd,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_current:
                a51_acurrent_user (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_dbproc, cak_i_dbprocedure,
            cak_i_proc,   cak_i_procedure,
            cak_i_call :
                BEGIN
                make_subtrans := false;
                (* PTS 1105327 E.Z. *)
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    is_invalid := false;
                (*ENDIF*) 
                a201call_proc (acv, odbc_partype, 0,
                      acv.a_ap_tree^[ 0 ].n_lo_level)
                END;
            cak_i_declare :
                BEGIN
                is_invalid := false;
                a60_adeclare (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_delete :
                BEGIN
                is_invalid := false;
                a58_adelete_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_describe :
                BEGIN
                is_invalid := false;
                a35describe (acv);
                pseudo_select := true;
                END;
            cak_i_diagnose:
                BEGIN
                acv.a_return_segm^.sp1r_function_code := csp1_diagnose_fc;
                init_sqlmode := acv.a_sqlmode;
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    BEGIN
                    is_invalid   := false;
                    acv.a_sqlmode    := sqlm_adabas;
                    END;
                (*ENDIF*) 
                a01_next_symbol(acv);
                a01_get_keyword (acv, subsymbindex, res_kw);
                CASE subsymbindex OF
                    cak_i_monitor:
                        a545diag_monitor_syntax (acv,
                              acv.a_ap_tree^[ 0 ].n_lo_level);
                    cak_i_object :
                        a30diag_oms(acv);
                    cak_i_analyze:
                        a544syntax_diag_analyze (acv,
                              acv.a_ap_tree^[ 0 ].n_lo_level);
                    cak_i_drop : (* PTS 1115972 *)
                        a20adiagnose_drop_file_statement (acv,
                              acv.a_ap_tree^[ 0 ].n_lo_level);
                    cak_i_set:
                        BEGIN  (* h.b. PTS 1105143 *)
                        a01_call_put (acv, a37, cak_x_set_parameter,
                              put_node);
                        acv.a_ap_tree^[ 0 ].n_lo_level := put_node;
                        a30set_parameter_syntax (acv, put_node);
                        END;
                    cak_i_vtrace :
                        BEGIN
                        a01_call_put (acv, a37, cak_x_diagnose, put_node);
                        acv.a_ap_tree^[ 0 ].n_lo_level := put_node;
                        a30diag_vtrace_syntax (acv, put_node);
                        END;
                    cak_i_break :
                        IF  NOT a30SetCountDown(acv)
                        THEN
                            BEGIN
                            a07_error (acv, e_wanted_keyword,
                                  put_node, put_node);
                            END;
                        (*ENDIF*) 
                    cak_i_check :
                        BEGIN (* 1113008 *)
                        a01_next_symbol(acv);
                        a01_get_keyword (acv, subsymbindex, res_kw);
                        IF  subsymbindex = cak_i_instance
                        THEN
                            a30CheckInstance(acv)
                        ELSE
                            a07_error (acv, e_wanted_keyword,
                                  put_node, put_node);
                        (*ENDIF*) 
                        END;
                    cak_i_update :
                        BEGIN (* PTS 1118179 *)
                        a01_next_symbol(acv);
                        a01_get_keyword (acv, subsymbindex, res_kw);
                        IF  (subsymbindex = cak_i_stat) OR
                            (subsymbindex = cak_i_statistics)
                        THEN
                            BEGIN
                            a01_next_symbol(acv);
                            a01_get_keyword (acv, subsymbindex, res_kw);
                            IF  (subsymbindex = cak_i_on)
                            THEN
                                g01newupdstat := true
                            ELSE
                                IF  (subsymbindex = cak_i_off)
                                THEN
                                    g01newupdstat := false
                                ELSE
                                    a07_error (acv, e_wanted_keyword,
                                          put_node, put_node);
                                (*ENDIF*) 
                            (*ENDIF*) 
                            END
                        ELSE
                            a07_error (acv, e_wanted_keyword,
                                  put_node, put_node);
                        (*ENDIF*) 
                        acv.a_ex_kind := only_syntax;
                        END;
&                   ifdef TRACE
                    cak_i_switch :
                        a30diag_switch_syntax (acv,
                              acv.a_ap_tree^[ 0 ].n_lo_level);
&                   endif
                    OTHERWISE
                        BEGIN
                        a07_error (acv, e_wanted_keyword,
                              put_node, put_node);
                        END
                    END;
                (*ENDCASE*) 
                IF  init_sqlmode = sqlm_oracle
                THEN
                    acv.a_sqlmode := init_sqlmode;
                (*ENDIF*) 
                END;
            cak_i_drop :
                BEGIN
                is_invalid := false;
                a20adrop_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            (* PTS 1106574 E.Z. *)
            cak_i_enable :
                BEGIN
                IF  NOT g01is_livecache
                THEN
                    is_invalid := true
                ELSE
                    BEGIN
                    is_invalid := false;
                    a51_aenable_write_trans (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
                    END
                (*ENDIF*) 
                END;
            cak_i_end :
                a20end_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_endload :
                BEGIN
                make_subtrans := false;
                a20_abegin_end_load_stmt  (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, symbindex)
                END;
            cak_i_exists :
                a20_aexist_table (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_expand :
                a78aexpand_column_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_explain :
                BEGIN
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    is_invalid := false;
                (*ENDIF*) 
                a60_aexplain_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_fetch :
                BEGIN
                is_invalid    := false;
                make_subtrans := false;
                (* PTS 1111576 E.Z. *)
                a73_afetch_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
                pseudo_select := true;
                END;
            cak_i_fnull,
            cak_i_fread,
            cak_i_fwrite :
                ak35af_column_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, symbindex);
            cak_i_force :
                BEGIN
                (* PTS 1102256 E.Z. *)
                a52_aforce_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
                (* PTS 1102750 E.Z. *)
                END;
            cak_i_get :
                BEGIN
                a51_aget_code_tables (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_grant :
                BEGIN
                is_invalid := false;
                a20agrant_revoke_statement (acv, NOT c_splitted_cmd,
                      acv.a_ap_tree^[ 0 ].n_lo_level, cak_i_grant)
                END;
            (* PTS 1111576 E.Z. *)
            cak_i_into :
                a20incopy_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_insert :
                BEGIN
                is_invalid := false;
                a56_ainsert_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                IF  acv.a_return_segm^.sp1r_returncode = cak_e_expr_in_insert
                THEN
                    BEGIN
&                   ifdef TRACE
                    t01moveobj (ak_syn, acv.a_cmd_part^.sp1p_buf, 1, acv.a_cmd_part^.sp1p_buf_len);
&                   endif
                    a01_init_command (acv);
                    acv.a_return_segm^.sp1r_returncode := 0;
                    a56_ainsert_statement (acv,
                          acv.a_ap_tree^[ 0 ].n_lo_level);
                    acv.a_ap_tree^[ acv.a_ap_tree^[ 0 ].n_lo_level ].n_length :=
                          acv.a_ap_tree^[ acv.a_ap_tree^[ 0 ].n_lo_level ].n_length +
                          cak_x_pseudo_ins_select
                    END
                (*ENDIF*) 
                END;
            cak_i_length :
                BEGIN
                make_subtrans := false;
                ak35alength_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level)
                END;
            cak_i_load :
                a20_aload_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_lock :
                BEGIN
                make_subtrans := false;
                IF  acv.a_sqlmode <> sqlm_ansi
                THEN
                    is_invalid := false;
                (*ENDIF*) 
                a52_alock_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, true);
                END;
            cak_i_monitor :
                BEGIN
                init_sqlmode := acv.a_sqlmode;
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    BEGIN
                    is_invalid   := false;
                    acv.a_sqlmode    := sqlm_adabas;
                    END;
                (*ENDIF*) 
                a41_astart_stop_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                IF  init_sqlmode = sqlm_oracle
                THEN
                    acv.a_sqlmode := init_sqlmode;
                (*ENDIF*) 
                END;
            (*   i_move :
                  a32_amove_statement (acv,
                  acv.a_ap_tree^[ 0 ].n_lo_level);*)
            cak_i_next :
                a73_anext_statement (
                      acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_open :
                ak35aopen_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_optimize :
                a35optimize_statement (acv);
            (*   i_place :
                  a32_aplace_statement (acv,
                  acv.a_ap_tree^[ 0 ].n_lo_level);*)
            cak_i_read :
                BEGIN
                make_subtrans := false;
                ak35aread_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level)
                END;
            (*i_reconnect :
                  areconnect_statement (acv,
                  acv.a_ap_tree^[ 0 ].n_lo_level);
                  *)
            cak_i_rename :
                BEGIN
                is_invalid := false;
                a20_arename_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_revoke :
                BEGIN
                is_invalid := false;
                a20agrant_revoke_statement (acv, NOT c_splitted_cmd,
                      acv.a_ap_tree^[ 0 ].n_lo_level, cak_i_revoke)
                END;
            cak_i_restart :
                ak35arestart_statement (acv, acv.a_ap_tree^[0].n_lo_level);
            (* i_rewrite :
                  a79arewrite_isam_statement (acv,
                  acv.a_ap_tree^[ 0 ].n_lo_level); *)
            (* PTS 1111576 E.Z. *)
            cak_i_rollback :
                BEGIN
                is_invalid    := false;
                make_subtrans := false;
                a52_acommit_rollback_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, false);
                END;
            cak_i_save, cak_i_restore :
                a20_asave_restore (acv, symbindex,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_search :
                BEGIN
                make_subtrans := false;
                ak35asearch_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level)
                END;
            cak_i_select :
                BEGIN
                is_invalid := false;
                a35aselect_statement (acv, 1,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                (* PTS 1111575 E.Z. *)
                END;
            cak_i_set :
                BEGIN
                is_invalid:= false;
                a51_aset_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_subtrans :
                BEGIN
                make_subtrans := false;
                a52asubtrans_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_savepoint :
                BEGIN
                is_invalid    := acv.a_sqlmode <> sqlm_oracle;
                make_subtrans := false;
                a52_asavepoint (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_trigger :
                a35trigger_trace (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_trunc :
                ak35atrunc_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_truncate :
                BEGIN
                is_invalid := acv.a_sqlmode <> sqlm_oracle;
                IF  NOT is_invalid
                THEN
                    a58atruncate_statement (acv,
                          acv.a_ap_tree^[0].n_lo_level)
                (*ENDIF*) 
                END;
            cak_i_unload :
                a20unload_table (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            cak_i_unlock :
                BEGIN
                (* PTS 1107262 E.Z. *)
                IF  acv.a_sqlmode = sqlm_oracle
                THEN
                    is_invalid := false;
                (*ENDIF*) 
                make_subtrans := false;
                ak35aunlock_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            cak_i_update :
                BEGIN
                is_invalid := false;
                a57_aupdate_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level, symbindex)
                END;
            cak_i_usage :
                BEGIN
                is_invalid := false;
                a38_ausage_statement (acv,
                      acv.a_ap_tree^[ 0 ].n_lo_level);
                END;
            (* PTS 1102256 E.Z. *)
            (* PTS 1110021 E.Z. *)
            cak_i_write :
                ak35awrite_statement (acv, acv.a_ap_tree^[ 0 ].n_lo_level);
            OTHERWISE
                is_invalid := true;
            END;
        (*ENDCASE*) 
        IF  is_invalid
        THEN
            BEGIN
            acv.a_return_segm^.sp1r_returncode := 0;
            acv.a_return_segm^.sp1r_errorpos   := 0;
            a07_b_put_error (acv, e_invalid_command, 1);
            END;
        (*ENDIF*) 
        ;
&       IFDEF TRACE
        IF  t01trace( ak_syn )
        THEN
            BEGIN
            t01int4 (ak_syn, 'START_NODE  ', acv.a_ap_tree^[ 0 ].n_lo_level);
            IF  acv.a_first_hint_node <> csp_minint2
            THEN
                t01int4 (ak_syn, 'HINT_NODE   ', acv.a_first_hint_node);
            (*ENDIF*) 
            t01aptree (ak_syn, acv.a_ap_tree^, acv.a_scv_index,
                  acv.a_first_hint_node);
            END
        ELSE
            BEGIN
            t01int4 (ak_sem, 'START_NODE  ', acv.a_ap_tree^[ 0 ].n_lo_level);
            IF  acv.a_first_hint_node <> csp_minint2
            THEN
                t01int4 (ak_sem, 'HINT_NODE   ', acv.a_first_hint_node);
            (*ENDIF*) 
            t01aptree (ak_sem, acv.a_ap_tree^, acv.a_scv_index,
                  acv.a_first_hint_node);
            END;
        (*ENDIF*) 
&       ENDIF
        END;
    (*ENDIF*) 
    IF  acv.a_init_ddl = no_ddl
    THEN
        acv.a_init_ddl := acv.a_is_ddl;
    (*ENDIF*) 
    IF  acv.a_return_segm^.sp1r_returncode <> 0
    THEN
        BEGIN
        acv.a_parsing_again := acv.a_return_segm^.sp1r_returncode = csp_old_fileversion;
        acv.a_try_again     := acv.a_parsing_again;
        END
    ELSE
        BEGIN
        (*********************************)
        IF  ( a01diag_monitor_on OR a01diag_analyze_on ) AND
            ( acv.a_in_session )
        THEN
            BEGIN
            last_cmd_was_select := b21m_is_select (
                  acv.a_transinf.tri_trans.trBdTcachePtr_gg00);
            (* we try to store SELECT and FETCHes together *)
            (* even if FETCH-parsen is between them        *)
            (* we expect the FETCH-parse directly behind   *)
            (* the SELECT-execute                          *)
            IF  ( last_cmd_was_select )
            THEN
                BEGIN
                IF  NOT pseudo_select
                THEN
                    b21mp_is_select( acv.a_transinf.tri_trans.trBdTcachePtr_gg00,
                          NOT c_is_select )
                (*ENDIF*) 
                END
            ELSE
                BEGIN
                b21m_parseid( acv.a_transinf.tri_trans.trBdTcachePtr_gg00, pp );
                IF  ( pp.pid_session.ci4_gg00 <> '    ' ) AND
                    ( ord( pp.pid_parsk.p_kind) <> ord( bsp_c1 ))
                    (* not counted values stored in b21 *)
                THEN
                    a545sm_insert( acv );
                (*ENDIF*) 
                b21m_reset_monitor( acv.a_transinf.tri_trans.trBdTcachePtr_gg00,
                      c_reset_sum );
                END
            (*ENDIF*) 
            END;
        (*********************************)
        (*ENDIF*) 
        IF  acv.a_ex_kind = only_syntax
        THEN
            BEGIN
            IF  (acv.a_is_ddl = ddl_create_as_select) AND
                (acv.a_init_ex_kind <> only_syntax)
            THEN
                BEGIN
                (* CREATE TABLE AS SELECT *)
                IF  a542initial_cmd_segm (acv)^.sp1c_mess_type <>
                    sp1m_execute
                THEN
                    a542reset_packet (acv);
                (*ENDIF*) 
                a35parse_ddl( acv, NOT c_show );
                END;
            (*ENDIF*) 
            END
        ELSE
            BEGIN
            (* PTS 1103681 E.Z. *)
            IF  (acv.a_precomp_info_byte >= csp1_p_mass_command) AND
                (acv.a_return_segm^.sp1r_function_code >= csp1_masscmd_fc_offset) AND
                (acv.a_count_variab = 0)
            THEN
                BEGIN
                acv.a_precomp_info_byte := acv.a_precomp_info_byte - csp1_p_mass_command;
                acv.a_return_segm^.sp1r_function_code :=
                      acv.a_return_segm^.sp1r_function_code - csp1_masscmd_fc_offset
                END;
            (*ENDIF*) 
            IF  (acv.a_ex_kind = only_parsing)
                AND
                NOT acv.a_progusage_add
                AND
                (* PTS 1115025 E.Z. *)
                (NOT (acv.a_is_ddl in
                [              no_ddl, ddl_analyze_procedure
                ,              ddl_comment_on, ddl_create_as_select
                ,              ddl_incopy_table, ddl_restore_schema
                ,              ddl_usage_off, ddl_save_restore_cmd])
                OR (symbindex = cak_i_init)
                (* PTS 1111576 E.Z. *)
                OR (symbindex = cak_i_force)
                OR (symbindex = cak_i_alter) (* oracle nls *)
                OR (symbindex = cak_i_monitor)
                OR (symbindex = cak_i_diagnose)
                OR (symbindex = cak_i_exists)
                (* PTS 1115654 E.Z. *)
                OR ((symbindex = cak_i_set) AND
                (acv.a_ap_tree^[acv.a_ap_tree^[0].n_lo_level].n_subproc in
                [cak_x_set_format,
                cak_x_set_on_timeout,
                cak_x_set_off_timeout,
                cak_x_set_role,
                cak_x_set_session_trace,
                cak_x_set_write_trans]))
                )
            THEN
                a35parse_ddl (acv,(symbindex = cak_i_explain))
            ELSE
                BEGIN
                acv.a_ap_tree^[0].n_proc := a10;
                IF  (acv.a_is_ddl <> no_ddl) AND
                    (acv.a_internal_sql = no_internal_sql) AND
                    NOT acv.a_progusage_add
                THEN
                    BEGIN
                    IF  (acv.a_sqlmode = sqlm_oracle)   AND
                        (acv.a_ex_kind <> only_parsing) AND
                        NOT a362in_migration
                    THEN
                        a52_ex_commit_rollback (acv,
                              m_commit, false, false);
                    (*ENDIF*) 
                    acv.a_usage_curr.fileRoot_gg00 := NIL_PAGE_NO_GG00
                    END;
                (*ENDIF*) 
                save_cmd_length   := acv.a_cmd_part^.sp1p_buf_len;
                save_data_length  := acv.a_data_length;
                init_ex_kind      := acv.a_ex_kind;
                countfilevers     := 0;
                countdatatypes    := 0;
                again             := false;
                IF  (acv.a_ap_tree^[ acv.a_ap_tree^[ 0 ].n_lo_level ].n_proc <> a63) AND
                    (acv.a_ap_tree^[ acv.a_ap_tree^[ 0 ].n_lo_level ].n_proc <> a56)
                THEN
                    acv.a_costcheck := false;
                (*ENDIF*) 
                IF  acv.a_max_intern_select > 0
                THEN
                    init_costsum := acv.a_costsum
                ELSE
                    init_costsum := 0;
                (*ENDIF*) 
                init_intern_expl := acv.a_intern_explain;
                REPEAT
                    acv.a_part_rollback := false;
                    acv.a_p_arr1.pcount := 0;
                    acv.a_p_arr1.pbasep := NIL;
                    IF  (acv.a_ex_kind <> only_parsing) OR
                        (acv.a_qualified_jv_upd = no_jv_upd)
                    THEN
                        acv.a_input_data_pos := 1;
                    (*ENDIF*) 
                    countfilevers := succ(countfilevers);
                    acv.a_output_data_pos := 1;
                    acv.a_return_segm^.sp1r_returncode := 0;
                    acv.a_return_segm^.sp1r_errorpos   := 0;
                    acv.a_main_returncode := 0;
                    acv.a_main_errorpos   := 0;
                    acv.a_err_parm_cnt := 0;
                    acv.a_special_expr := false;
                    acv.a_allow_functions := tf_unknown;
                    IF  make_subtrans
                    THEN
                        a52internal_subtrans( acv );
                    (*ENDIF*) 
                    ak35call_semantik( acv );
                    (* PTS 1000985/1001162 E.Z. *)
                    IF  acv.a_subq_datatype_problem AND
                        (acv.a_return_segm^.sp1r_returncode = 0)
                    THEN
                        acv.a_return_segm^.sp1r_returncode := cak_e_subq_type_diff;
                    (*ENDIF*) 
                    IF  (acv.a_main_returncode <> 0) AND
                        (acv.a_return_segm^.sp1r_returncode = 0)
                    THEN
                        BEGIN
                        acv.a_return_segm^.sp1r_returncode := acv.a_main_returncode;
                        acv.a_return_segm^.sp1r_errorpos   := acv.a_main_errorpos;
                        acv.a_main_returncode := 0;
                        acv.a_main_errorpos   := 0;
                        END;
                    (*ENDIF*) 
                    IF  acv.a_return_segm^.sp1r_returncode = 0
                    THEN
                        BEGIN
                        again := false;
                        IF  (acv.a_init_ddl <> no_ddl)         AND
                            (acv.a_init_ddl <> ddl_comment_on) AND
                            (acv.a_init_ddl <> ddl_create_as_select)
                        THEN
                            a10clean_cache (acv);
                        (*ENDIF*) 
                        END
                    ELSE
                        (* PTS 1109783 E.Z. *)
                        IF  (acv.a_return_segm^.sp1r_returncode = cak_e_released)
                            OR
                            (acv.a_return_segm^.sp1r_returncode = cak_e_roll_released)
                            OR
                            (
                            ((acv.a_return_segm^.sp1r_function_code = csp1_commit_release_fc) OR
                            ( acv.a_return_segm^.sp1r_function_code = csp1_rollback_release_fc))
                            AND
                            (acv.a_cmd_segm^.sp1c_mess_type in [ sp1m_dbs, sp1m_execute ])
                            )
                        THEN
                            again := false
                        ELSE
                            BEGIN
                            acv.a_intern_explain := init_intern_expl;
                            refresh_catalog :=
                                  ak35refresh_catalog (acv);
                            IF  (acv.a_return_segm^.sp1r_returncode = csp_old_fileversion)  OR
                                (acv.a_return_segm^.sp1r_returncode = cgg_old_parsid)       OR
                                (acv.a_return_segm^.sp1r_returncode = cak_e_cache_full)     OR
                                (acv.a_return_segm^.sp1r_returncode = cak_e_inv_not_found)  OR
                                (acv.a_return_segm^.sp1r_returncode =
                                cak_e_table_or_file_dropped)                            OR
                                refresh_catalog                                         OR
                                (* PTS 1000985/1001162 E.Z. *)
                                (acv.a_subq_datatype_problem AND
                                (acv.a_return_segm^.sp1r_returncode = cak_e_subq_type_diff)) OR
                                (acv.a_return_segm^.sp1r_returncode = cak_e_corelated_subquery_not_allowed)
                            THEN
                                IF  (symbindex = cak_i_beginload) OR
                                    (symbindex = cak_i_endload)   OR
                                    (symbindex = cak_i_fetch  )
                                    (* PTS 1111576 E.Z. *)
                                    (* PTS 1111075 E.Z. *)
                                THEN
                                    again := false
                                ELSE
                                    (* PTS 1106602 E.Z. *)
                                    IF  (
                                        (acv.a_is_ddl <> no_ddl)                 AND
                                        (acv.a_return_segm^.sp1r_returncode <>
                                        cak_e_corelated_subquery_not_allowed)    AND
                                        (acv.a_return_segm^.sp1r_returncode <>
                                        cak_e_subq_type_diff)
                                        )
                                    THEN
                                        BEGIN
                                        again := false;
                                        a52end_rollback_subtrans (
                                              acv, a01_il_b_identifier,
                                              m_end);
                                        IF  refresh_catalog
                                        THEN
                                            a10refresh_cache (acv)
                                        ELSE
                                            a10_cache_delete (acv,
                                                  NOT c_is_rollback);
                                        (*ENDIF*) 
                                        END
                                    ELSE
                                        BEGIN
                                        acv.a_cmd_part^.sp1p_buf_len    := save_cmd_length;
                                        acv.a_data_length   := save_data_length;
                                        acv.a_costsum       := init_costsum;
                                        acv.a_ex_kind       := init_ex_kind;
                                        IF  acv.a_in_internal_subtr
                                        THEN
                                            BEGIN
                                            (* PTS 1106602 E.Z. *)
                                            IF  (
                                                (acv.a_is_ddl = ddl_create_as_select) AND
                                                (acv.a_return_segm^.sp1r_returncode =
                                                cak_e_corelated_subquery_not_allowed)
                                                )                                              OR
                                                (
                                                (acv.a_is_ddl <> no_ddl) AND
                                                (acv.a_return_segm^.sp1r_returncode = cak_e_subq_type_diff)
                                                )
                                            THEN
                                                BEGIN
                                                (* needed, otherwise the stored_cmd   *)
                                                (* will be destroyed, which is needed *)
                                                (* for the second try of the select   *)
                                                m_init_ddl := acv.a_init_ddl;
                                                acv.a_init_ddl := no_ddl;
                                                a52end_rollback_subtrans (
                                                      acv, a01_il_b_identifier,
                                                      m_end);
                                                acv.a_init_ddl := m_init_ddl
                                                END
                                            ELSE
                                                a52end_rollback_subtrans (
                                                      acv, a01_il_b_identifier,
                                                      m_end)
                                            (*ENDIF*) 
                                            END;
                                        (*ENDIF*) 
                                        IF  refresh_catalog
                                        THEN
                                            a10refresh_cache (acv)
                                        ELSE
                                            a10_cache_delete (acv,
                                                  NOT c_is_rollback);
                                        (*ENDIF*) 
                                        IF  acv.a_return_segm^.sp1r_returncode =
                                            cak_e_corelated_subquery_not_allowed
                                        THEN
                                            BEGIN
                                            again := (acv.a_is_ddl = no_ddl) OR
                                                  (acv.a_is_ddl = ddl_create_as_select);
                                            IF  again AND
                                                (acv.a_max_intern_select > 0) AND
                                                (acv.a_intern_select_cnt > 0)
                                            THEN
                                                BEGIN
                                                (* everything was destroyed *)
                                                (* by a10cmd_rollback       *)
                                                (* start at the very first beginning *)
                                                again := false;
                                                END
                                            (*ENDIF*) 
                                            END
                                        ELSE
                                            (* PTS 1000985/1001162 E.Z. *)
                                            IF  (acv.a_subq_datatype_problem AND
                                                (acv.a_return_segm^.sp1r_returncode = 21005))
                                            THEN
                                                BEGIN
                                                IF  countdatatypes <= max_countdatatypes
                                                THEN
                                                    BEGIN
                                                    countdatatypes := succ(countdatatypes);
                                                    again := true;
                                                    acv.a_part_rollback := true;
                                                    acv.a_subq_datatype_problem := false;
                                                    acv.a_return_segm^.sp1r_returncode := 0;
                                                    countfilevers := pred(countfilevers);
                                                    END
                                                ELSE
                                                    BEGIN
                                                    again := false;
                                                    acv.a_return_segm^.sp1r_returncode := 0;
                                                    a07_b_put_error (acv, e_incompatible_datatypes, 1)
                                                    END
                                                (*ENDIF*) 
                                                END
                                            ELSE
                                                BEGIN
                                                again           := false;
                                                acv.a_parsing_again := acv.a_return_segm^.sp1r_returncode = csp_old_fileversion;
                                                acv.a_try_again     := true;
                                                a542reset_packet (acv)
                                                END
                                            (*ENDIF*) 
                                        (*ENDIF*) 
                                        END;
                                    (*ENDIF*) 
                                (*ENDIF*) 
                            (*ENDIF*) 
                            END;
                        (*ENDIF*) 
                    (*ENDIF*) 
                UNTIL
                    (NOT again) OR (countfilevers > 1);
                (*ENDREPEAT*) 
                IF  acv.a_return_segm^.sp1r_returncode <> 0
                THEN
                    IF  (acv.a_return_segm^.sp1r_returncode =
                        a07_return_code (e_unknown_tablename,
                        acv.a_sqlmode))  OR
                        (acv.a_return_segm^.sp1r_returncode =
                        a07_return_code (e_unknown_columnname,
                        acv.a_sqlmode)) OR
                        (acv.a_return_segm^.sp1r_returncode =
                        a07_return_code (e_missing_privilege,
                        acv.a_sqlmode)) OR
                        (acv.a_return_segm^.sp1r_returncode = cak_e_table_unloaded)
                    THEN
                        BEGIN
                        IF  acv.a_error_tableid <> b01niltree_id.fileTabId_gg00
                        THEN
                            a10table_cache_delete (acv, acv.a_error_tableid)
                        (*ENDIF*) 
                        END
                    ELSE
                        IF  (acv.a_return_segm^.sp1r_returncode = csp_old_fileversion)
                            (* PTS 1108476 E.Z. *)
                            AND NOT
                            (
                            (acv.a_cmd_segm^.sp1c_mess_type = sp1m_execute) AND
                            (acv.a_ex_kind = pars_then_execute)             AND
                            (acv.a_is_ddl <> no_ddl)
                            )
                        THEN
                            BEGIN
                            acv.a_return_segm^.sp1r_returncode := 0;
                            a07_b_put_error (acv,
                                  e_invalid_mix_dml_ddl, 1)
                            END
                        ELSE
                            IF  acv.a_return_segm^.sp1r_returncode = cak_e_union_in_corr
                            THEN
                                BEGIN
                                acv.a_return_segm^.sp1r_returncode := 0;
                                a07_b_put_error (acv,
                                      e_corelated_subquery_not_allowe,
                                      -acv.a_return_segm^.sp1r_errorpos)
                                      (* for -errorpos see vak07, isuni.. *)
                                END;
                            (*ENDIF*) 
                        (*ENDIF*) 
                    (*ENDIF*) 
                (*ENDIF*) 
                END;
            (*ENDIF*) 
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  acv.a_ap_max_node <> cak_init_node
    THEN
        a10shrink_syntax_tree (acv);
    (*ENDIF*) 
    IF  (symbindex = cak_i_connect) AND (acv.a_return_segm^.sp1r_returncode = 0)
    THEN
        old_costwarn     := acv.a_costwarn_value
    ELSE
        acv.a_costwarn_value := old_costwarn
    (*ENDIF*) 
    END
ELSE
    BEGIN
    IF  symbindex = cak_i_vtrace
    THEN
        a35_vtracen (acv)
    ELSE
        IF  symbindex = cak_i_state
        THEN
            a35state (acv)
        ELSE
            (* PTS 1106205 E.Z. *)
            IF  symbindex = cak_i_ping
            THEN
                a35ping (acv)
            ELSE
                (* PTS 1111229 E.Z. *)
                IF  symbindex = cak_i_info
                THEN
                    ak35info_standby (acv)
                ELSE
                    (* PTS 1120378 E.Z. *)
                    a07_b_put_error (acv, e_invalid_command, 1)
                (*ENDIF*) 
            (*ENDIF*) 
        (*ENDIF*) 
    (*ENDIF*) 
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35describe (VAR acv : tak_all_command_glob);
 
VAR
      res_kw   : boolean;
      aux_pos  : integer;
      kw_index : integer;
 
BEGIN
WITH acv, a_scv DO
    BEGIN
    a_return_segm^.sp1r_function_code := csp1_describe_fc;
    aux_pos := sc_newpos;
    a01_next_symbol (acv);
    a01_get_keyword (acv, kw_index, res_kw);
    CASE kw_index OF
        (* PTS 1111576 E.Z. *)
        cak_i_constraint, cak_i_default, cak_i_index, cak_i_table :
            a20describe (acv, kw_index, a_ap_tree^[ 0 ].n_lo_level);
        OTHERWISE
            BEGIN
            sc_newpos := aux_pos;
            a73_adescribe_resulttable (acv,
                  a_ap_tree^[ 0 ].n_lo_level)
            END;
        END;
    (*ENDCASE*) 
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35optimize_statement (VAR acv : tak_all_command_glob);
 
VAR
      res_kw    : boolean;
      dummy_n   : tsp_int2;
      symbindex : integer;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
CASE symbindex OF
    cak_i_on, cak_i_off :
        BEGIN
        a01_next_symbol (acv);
        acv.a_optimize_info.o_do_optimize := symbindex = cak_i_on;
        acv.a_ex_kind := only_syntax
        END;
    OTHERWISE
        a07_error (acv, e_wanted_keyword, dummy_n, dummy_n);
    END;
(*ENDCASE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35parse_ddl (
            VAR acv : tak_all_command_glob;
            is_show : boolean);
 
CONST
      c_store_cmd = true;
 
VAR
      b_err         : tgg_basis_error;
      shortinfo_ptr : tak_sysbufferaddress;
      sysk          : tgg_sysinfokey;
 
BEGIN
acv.a_return_segm^.sp1r_returncode := 0;
IF  ( is_show )
THEN
    acv.a_pars_last_key.p_kind := m_show
ELSE
    BEGIN
    acv.a_pars_last_key.p_kind := m_create_table;
    IF  ( acv.a_is_ddl = no_ddl )
    THEN (* assign any ddl_kind that requires no trigger call *)
        acv.a_is_ddl := ddl_create_table
    (*ENDIF*) 
    END;
(*ENDIF*) 
sysk                     := a01sysnullkey;
sysk.sentrytyp           := cak_eshortinfo;
a10_nil_get_sysinfo( acv, sysk, d_release,
      sizeof( tak_shortinforecord ) - sizeof( tak_paraminfoarr ),
      shortinfo_ptr, b_err );
IF  ( b_err = e_ok )
THEN
    BEGIN
    shortinfo_ptr^.sshortinfo.sicount := 0;
    shortinfo_ptr^.sshortinfo.sisl    := 0;
    acv.a_init_ex_kind                := only_parsing;
    a54_shortinfo_to_varpart( acv, c_store_cmd, shortinfo_ptr );
    (* does all to be done, i.e                      *)
    (* stores the DDL statement in the temp catalog, *)
    (* returns the parseid to the user and destroys  *)
    (* the short info record                         *)
    END
ELSE
    a07_b_put_error( acv, b_err, 1 );
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35trigger_trace (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      res_kw    : boolean;
      symbindex : integer;
 
BEGIN
WITH acv, a_scv DO
    BEGIN
    a01_next_symbol (acv);
    IF  a01mandatory_keyword (acv, cak_i_diagnose)
    THEN
        BEGIN
        a01_get_keyword (acv, symbindex, res_kw);
        CASE symbindex OF
            cak_i_on, cak_i_off :
                BEGIN
                a01_next_symbol (acv);
                a01_call_put (acv, a262, symbindex, put_node);
                END;
            OTHERWISE
                a07_error (acv, e_wanted_keyword, put_node, put_node);
            END;
        (*ENDCASE*) 
        END
    (*ENDIF*) 
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35endlessloop (VAR dummy : tsp_int2);
 
BEGIN
IF  dummy > 0
THEN
    dummy := dummy-1
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35af_column_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2;
            f_type       : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78af_column_statement (acv, put_node, f_type)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35aopen_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78aopen_column_statement (acv, put_node)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(* PTS 1105700 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      ak35acheck_statement (
            VAR acv        : tak_all_command_glob;
            VAR put_node   : tsp_int2;
            VAR is_invalid : boolean);
 
BEGIN
put_node := 0;
a01_next_symbol (acv);
IF  a01_eqkey (a01kw[cak_i_database], acv.a_sqlmode,
    acv.a_cmd_part^.sp1p_buf, acv.a_scv)
THEN
    a41_a_check_database (acv, put_node)
ELSE
    BEGIN
    IF  (a01_eqkey (a01kw[cak_i_table], acv.a_sqlmode,
        acv.a_cmd_part^.sp1p_buf, acv.a_scv)) AND
        (acv.a_sqlmode = sqlm_oracle)
    THEN
        is_invalid := false;
    (*ENDIF*) 
    a20check_table_stmt (acv, put_node)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35aclose_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
BEGIN
a01_next_symbol (acv);
IF  acv.a_info_output
THEN
    a07_error (acv, e_invalid_messagetype, put_node, put_node);
(*ENDIF*) 
IF  acv.a_scv.sc_symb = s_eof
THEN
    a73_aclose_resulttable (acv, put_node)
ELSE
    IF  a01_eqkey (a01kw[ cak_i_column ], acv.a_sqlmode,
        acv.a_cmd_part^.sp1p_buf, acv.a_scv)
    THEN
        BEGIN
        acv.a_return_segm^.sp1r_returncode := 0;
        a78aclose_column_statement (acv, put_node);
        END
    ELSE
        a73_aclose_resulttable (acv, put_node);
    (*ENDIF*) 
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35aread_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78aread_column_statement (acv, put_node)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35arestart_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
BEGIN
a01_next_symbol (acv);
IF  a01mandatory_keyword (acv, cak_i_index)
THEN
    a01_call_put (acv, a37, cak_i_restart, put_node);
(*ENDIF*) 
a01_is_end_symbol (acv)
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35awrite_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78awrite_column_statement (acv, put_node)
ELSE
    IF  symbindex = cak_i_cache
    THEN
        BEGIN
        acv.a_ex_kind := only_syntax;
        a10dump (acv)
        END
    ELSE
&       ifdef TRACE
        IF  symbindex = cak_i_key
        THEN
            a01_write_keywords
        ELSE
&           endif
            a07_error (acv, e_wanted_keyword, put_node, last_node)
        (*ENDIF*) 
    (*ENDIF*) 
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35asearch_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78asearch_column_statement (acv, put_node)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35aselect_statement (
            VAR acv      : tak_all_command_glob;
            StmtStartPos : tsp_int4;
            VAR put_node : tsp_int2);
 
VAR
      index     : integer;
      res_kw    : boolean;
      scvh      : tak_scanner_glob;
 
BEGIN
a01_next_symbol (acv);
(* skip hint *)
IF  acv.a_scv.sc_symb = s_hint
THEN
    BEGIN
&   ifdef TRACE
    t01int4(ak_syn, 'skip hintpos', acv.a_scv.sc_sypos);
&   endif
    scvh := acv.a_scv;
    a01_next_symbol(acv);
    WHILE ( NOT ((scvh.sc_symb = s_asterisk) AND (acv.a_scv.sc_symb = s_divide ))
          AND
          (acv.a_scv.sc_symb <> s_eof) ) DO
        BEGIN
        scvh := acv.a_scv;
        a01_next_symbol(acv);
        END;
    (*ENDWHILE*) 
    a01_next_symbol(acv);
    END;
(*ENDIF*) 
scvh := acv.a_scv;
a01_get_keyword (acv, index, res_kw);
a01_next_symbol (acv);
WITH acv, a_scv DO
    BEGIN
    acv.a_scv         := scvh;
    sc_newpos         := StmtStartPos;
    sc_sypos          := StmtStartPos;
    a_return_segm^.sp1r_returncode := 0;
    sc_reserved_check := false;
    sc_double_quote   := 0;
    a01_next_symbol(acv);
    (* PTS 1111575 E.Z. *)
    IF  (a_ex_kind = only_parsing)
        AND
        (a_max_intern_select = 0)
        (* no complex view in FROM-part *)
    THEN
        a_may_be_direct_sel := true;
    (*ENDIF*) 
    a60_aselect_statement (acv, put_node)
    END
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35alength_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78alength_column_statement (acv, put_node)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35atrunc_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      last_node : tsp_int2;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
IF  symbindex = cak_i_column
THEN
    a78atrunc_column_statement (acv, put_node)
ELSE
    a07_error (acv, e_wanted_keyword, put_node, last_node)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35aunlock_statement (
            VAR acv      : tak_all_command_glob;
            VAR put_node : tsp_int2);
 
VAR
      symbindex : integer;
      res_kw    : boolean;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, symbindex, res_kw);
a52_aunlock_statement (acv, put_node)
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak35call_semantik (VAR acv : tak_all_command_glob);
 
VAR
      init_sqlmode        : tsp_sqlmode;
      m_returncode        : tsp_int2;
      dummy_sel_parsid    : tak_parsid;
      dummy_parsid        : tak_parsid;
      call_sm_insert      : boolean;
      reset_running_cmds  : boolean;
 
BEGIN
WITH acv, a_ap_tree^[ a_ap_tree^[ 0 ].n_lo_level ] DO
    IF  a_count_variab > csp_maxvariables
    THEN
        a07_b_put_error( acv, e_too_many_variables, 1 )
    ELSE
        BEGIN
        call_sm_insert     := false;
        reset_running_cmds := false;
        IF  (a_ex_kind <> only_parsing) AND
            g01diag_moni_parse_on       AND
            a_in_session                AND
            (a_statement_kind in [ideletes, iinserts, iupdates,
            icommits, irollbacks, ialters, icreates, idrops])
        THEN
            BEGIN
            dummy_parsid.pid_session :=
                  a_transinf.tri_trans.trSessionId_gg00;
            dummy_parsid.pid_parsk   := a_pars_last_key;
            dummy_parsid.pid_appl_info[1]  := chr(0);
            dummy_parsid.pid_dtime_info[1] := chr(ord(dtf_none));
            dummy_sel_parsid.pid_session.ci4_gg00
                  := cgg_nil_session;
            a545diag_parse_info (acv, dummy_parsid, dummy_sel_parsid);
            a42put_running_cmds (acv, dummy_parsid);
            reset_running_cmds := true;
            IF  a01diag_monitor_on
            THEN
                BEGIN
                b21m_reset_monitor (acv.a_transinf.tri_trans.trBdTcachePtr_gg00,
                      c_reset_sum);
                b21mp_parseid_put (acv.a_transinf.tri_trans.trBdTcachePtr_gg00,
                      dummy_parsid);
                call_sm_insert := true;
                END;
            (*ENDIF*) 
            END;
        (*ENDIF*) 
        CASE n_proc OF
            no_proc,
            a14, a19,
            a20,                               a27,      a29,
            a30,      a32, a33,      a35, a36,           a39,
            a40,                                         a49,
            a59,
            a61, a68, a69,
            a71, a72, a74,
            a81 :
                BEGIN
                (* PTS 1104914 E.Z. *)
                a07_b_put_error (acv, e_invalid_command, ord(n_proc));
                END;
            a10 :
                BEGIN
                (* PTS 1104914 E.Z. *)
                (* create schema has nothing to do *)
                END;
            a11 :
                a11_call_semantic (acv);     (* table *)
            a12 :
                a12_call_semantic (acv);     (* domain *)
            a13 :
                a13_call_semantic (acv);     (* alter table *)
            a15 :
                a15save_restore_catalog (acv);
            a16 :
                a16_call_semantic (acv);     (* create view  *)
            a17 :
                a17call_semantic (acv);
            a18 :
                a18_call_semantic (acv);     (* exist,rename table *)
            a21 :
                a21_call_semantic (acv);     (* user *)
            a22 :
                a22_call_semantic (acv);     (* grant *)
            a23 :
                a23_call_semantic (acv);     (* synonym *)
            a24 :
                a24_call_semantic (acv, ignore_no_errors); (*index*)
            a25 :
                a25link_semantic (acv, 1);      (* Link *)
            a26 :
                a26comment_on (acv);
            a260 : (* PTS 1104914 T.A. call of dbproc happens in VAK93 *)
                acv.a_stored_proc_call := true;
            a261 :
                a261proc_handling (acv);
            a262 :
                a262trigger_semantic (acv);
            a264 :
                a264function_semantic (acv);
            a28 :
                a28update_statistics (acv);
            a34 :
                a34call_semantic (acv);
            a37 :
                a37user_command (acv);
            a38 :
                a38_call_semantic (acv);     (* drop program *)
            a41, a43 :
                BEGIN
                init_sqlmode := a_sqlmode;
                IF  (a_sqlmode = sqlm_oracle)                           AND
                    (a_ap_tree^[ n_lo_level ].n_subproc <> cak_i_param) AND
                    (n_proc    = a41)
                THEN
                    a_sqlmode := sqlm_adabas;
                (*ENDIF*) 
                a41_show_semantic (acv);    (* shows *)
                IF  init_sqlmode = sqlm_oracle
                THEN
                    a_sqlmode := init_sqlmode;
                (*ENDIF*) 
                END;
            a42 :
                a42_start_semantic (acv);    (* start monitor *)
            a44 :
                a42_check_database (acv);
            a51 :
                a51semantic (acv);
            a52 :
                a52_call_semantik (acv, n_subproc);
            a56 :
                IF  n_subproc = cak_x_insert_select
                THEN
                    a562_select_insert (acv)
                ELSE
                    a56_insert_statement (acv);
                (*ENDIF*) 
            a57 :
                a57_update_statement (acv, a_ap_tree^[ 0 ].n_lo_level);
            a58 :
                a58_delete (acv, a_ap_tree^[ 0 ].n_lo_level);
            a62 :
                BEGIN
                a62_direct_ordered_select (acv, a_ap_tree^[ 0 ].n_lo_level);
                IF  (a_may_be_direct_sel AND
                    ((a_return_segm^.sp1r_returncode =
                    a07_return_code (e_missing_basetable,
                    a_sqlmode)) OR
                    (a_return_segm^.sp1r_returncode =
                    a07_return_code (e_no_resulttable_allowed,
                    a_sqlmode)) OR
                    (a_return_segm^.sp1r_returncode =
                    a07_return_code (e_missing_keyfield,
                    a_sqlmode)) OR
                    (a_return_segm^.sp1r_returncode =
                    a07_return_code (e_column_must_be_keycolumn,
                    a_sqlmode)) OR
                    (a_return_segm^.sp1r_returncode =
                    a07_return_code (e_duplicate_columnname,
                    a_sqlmode))))
                THEN
                    (* PTS 1111575 E.Z. *)
                    BEGIN
                    a_may_be_direct_sel := false;
                    a_max_intern_select := 0;
                    a_intern_select_cnt := 0;
                    a_parameter_offset  := 0;
                    a_precomp_info_byte := csp1_p_none;
                    a_errpos_offset     := 0;
                    a_command_kind      := single_command;
                    a_drop_serverdb_ptr := NIL;
                    a_timestamp         := bsp_c20;
                    a_isolation_info    := temp_lock_rec_not_needed;
                    a_error_tableid     := b01niltree_id.fileTabId_gg00;
                    m_returncode       := a_return_segm^.sp1r_returncode;
                    a_return_segm^.sp1r_returncode         := 0;
                    WITH a_pars_last_key DO
                        BEGIN
                        p_id   := chr(0);
                        p_kind := m_nil;
                        p_no   := 0
                        END;
                    (*ENDWITH*) 
                    a_first_parskey    := chr(0);
                    a_tempinfo_key     := cgg_zero_id;
                    a01_init_command (acv);
                    a60_aselect_statement (acv,
                          a_ap_tree^[ 0 ].n_lo_level);
                    IF  a_return_segm^.sp1r_returncode <> 0
                    THEN
                        BEGIN
                        (* it was really a wrong SELECT DIRECT *)
                        a_return_segm^.sp1r_returncode :=
                              m_returncode;
                        a_return_segm^.sp1r_errorpos   := 1;
                        END;
                    (*ENDIF*) 
                    IF  a_return_segm^.sp1r_returncode = 0
                    THEN
                        a660_select (acv, a_ap_tree^[ 0 ].n_lo_level);
                    (*ENDIF*) 
                    END
                (*ENDIF*) 
                END;
            a63 :
                a660_select (acv, a_ap_tree^[ 0 ].n_lo_level);
            a73 :
                a73_call_semantic (acv); (*(m)fetch/close/describe*)
            (* drop parseid, next stamp, next long *)
            a77 :
                a77string_col_semantic (acv);
            OTHERWISE
                BEGIN
                (* PTS 1104914 E.Z. *)
                a07_b_put_error (acv, e_invalid_command, ord(n_proc));
                END
            END;
        (*ENDCASE*) 
        IF  call_sm_insert
        THEN
            BEGIN
            a545sm_insert(acv);
            b21m_reset_monitor (acv.a_transinf.tri_trans.trBdTcachePtr_gg00,
                  c_reset_sum);
            END;
        (*ENDIF*) 
        IF  reset_running_cmds
        THEN
            a42reset_running_cmds (acv);
        (*ENDIF*) 
        END;
    (*ENDIF*) 
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
FUNCTION
      ak35refresh_catalog (VAR acv : tak_all_command_glob) : boolean;
 
BEGIN
WITH acv, a_return_segm^ DO
    ak35refresh_catalog  := (a_is_ddl = no_ddl) AND
          (a_intern_select_cnt = 0)             AND
          (* PTS 1113100 E.Z. *)
          (acv.a_pars_curr.fileTfnTemp_gg00 <> ttfnTrigger_egg00) AND
          (( sp1r_returncode = a07_return_code (
          e_null_value_illegal, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_column_must_be_keycolumn, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_col_must_be_no_keycolumn, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_column_must_have_default, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_column_not_indexed, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_const_incompatible_with_typ, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_incompatible_datatypes, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_invalid_datalength, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_invalid_length_of_datatyp, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_join_fields_too_long, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_missing_column_definite, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_missing_mandatory_recordfield, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_missing_privilege, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_one_output_field_too_long, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_output_columns_too_long, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_too_few_columns, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_too_many_columns, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_too_many_values, a_sqlmode)) OR
          ( sp1r_returncode = a07_return_code (
          e_unknown_columnname, a_sqlmode)) OR
          (* PTS 1000985/1001162 E.Z. *)
          a_subq_datatype_problem)
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35state (VAR acv : tak_all_command_glob);
 
VAR
      res_kw   : boolean;
      kw_index : integer;
 
BEGIN
a01_next_symbol (acv);
a01_get_keyword (acv, kw_index, res_kw);
CASE kw_index OF
    cak_i_save, cak_i_restore :
        a37state_get    (acv, kw_index);
    cak_i_vtrace :
        a37state_vtrace (acv);
    OTHERWISE
        a07_b_put_error (acv, e_invalid_command, 1)
    END
(*ENDCASE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a35_vtracen (VAR acv : tak_all_command_glob);
 
BEGIN
a01_next_symbol (acv);
a01_is_end_symbol (acv);
IF  acv.a_return_segm^.sp1r_returncode = 0
THEN
    BEGIN
    b120FlushTrace( acv.a_transinf.tri_trans.trTaskId_gg00 );
    IF  acv.a_curr_user_name = a01_il_b_identifier
    THEN
        acv.a_return_segm^.sp1r_returncode := cak_e_released;
    (*ENDIF*) 
    acv.a_return_segm^.sp1r_function_code := csp1_diagnose_fc;
    (* PTS 1113577 E.Z. *)
    IF  acv.a_ex_kind = only_parsing
    THEN
        BEGIN
        a01_call_put (acv, a36, cak_x_diagnose, acv.a_ap_tree^[0].n_lo_level);
        a35parse_ddl (acv, false);
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(* PTS 1111229 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      ak35info_standby (VAR acv : tak_all_command_glob);
 
VAR
      mapping_info_ptr : tsp00_MoveObjPtr;
      mapping_info_len : tsp00_Int4;
      shortinfo        : tak_shortinforecord;
      pos              : tsp_int4;
      name             : tsp00_C18;
      c                : tsp_c1;
 
BEGIN
WITH acv DO
    BEGIN
    a01_next_symbol (acv);
    IF  a01mandatory_keyword (acv, cak_i_standby)
    THEN
        BEGIN
        a01_next_symbol (acv);
        a01_is_end_symbol (acv);
        IF  acv.a_return_segm^.sp1r_returncode = 0
        THEN
            BEGIN
            IF  a_curr_retpart = NIL
            THEN
                a06init_curr_retpart (acv);
            (*ENDIF*) 
            IF  a_curr_retpart <> NIL
            THEN
                IF  RTEHSS_GetMappingInfo (mapping_info_len,
                    mapping_info_ptr)
                THEN
                    BEGIN
                    pos := 1;
                    name := 'DEVICE INFO       ';
                    (* PTS 1113268 E.Z. *)
                    a06colname_retpart_move (acv, @name, 11, csp_ascii);
                    WITH shortinfo.siinfo[1] DO
                        BEGIN
                        sp1i_mode       := [ sp1ot_mandatory ];
                        sp1i_io_type    := sp1io_output;
                        sp1i_data_type  := dchb;
                        sp1i_frac       := 0;
                        sp1i_length     := mapping_info_len;
                        sp1i_in_out_len := succ(mapping_info_len);
                        sp1i_bufpos     := pos;
                        pos             := pos + sp1i_in_out_len
                        END;
                    (*ENDWITH*) 
                    a06finish_curr_retpart (acv, sp1pk_columnnames, 1);
                    shortinfo.sicount := 1;
                    a06retpart_move (acv, @shortinfo.siinfo,
                          shortinfo.sicount * sizeof (shortinfo.siinfo[1]));
                    a06finish_curr_retpart (acv, sp1pk_shortinfo, shortinfo.sicount);
                    c[1] := csp_defined_byte;
                    a06retpart_move (acv, @c[1], 1);
                    a06char_retpart_move (acv, mapping_info_ptr, mapping_info_len);
                    a06finish_curr_retpart (acv, sp1pk_data, 1)
                    END
                ELSE
                    a07_b_put_error (acv, e_standby_info_not_ok, 1)
                (*ENDIF*) 
            (*ENDIF*) 
            END
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END
(*ENDWITH*) 
END;
 
(* PTS 1106205 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      a35ping (VAR acv : tak_all_command_glob);
 
VAR
      i            : integer;
      parsid       : tsp_c12;
 
BEGIN
a01_next_symbol (acv);
a01_is_end_symbol (acv);
IF  acv.a_return_segm^.sp1r_returncode = 0
THEN
    BEGIN
    IF  acv.a_curr_user_name = a01_il_b_identifier
    THEN
        acv.a_return_segm^.sp1r_returncode := cak_e_released;
    (*ENDIF*) 
    acv.a_return_segm^.sp1r_function_code := csp1_diagnose_fc;
    IF  acv.a_ex_kind = only_parsing
    THEN
        BEGIN
        FOR i := 1 TO sizeof(parsid) DO
            parsid[ i ] := csp_defined_byte;
        (*ENDFOR*) 
        parsid[ sizeof(parsid)-1 ] := chr(csp1_p_command_executed);
        a06retpart_move (acv, @parsid, sizeof(parsid));
        a06finish_curr_retpart (acv, sp1pk_parsid, 1)
        END;
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
