.nf
 
 .nf

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

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

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

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

 
.fo
*****************************************************
Copyright (c) 1999-2005 SAP AG
SAP Database Technology
 
Release :      Date : 2000-11-16
*****************************************************
modname : VAK04
changed : 2000-11-16
module  : AK_byteswap_and_locset
 
Author  : ElkeZ
Created : 1985-03-14
*****************************************************
 
Purpose :
 
Define  :
 
        PROCEDURE
              a04_info_byteswap_codetype (
                    a_mess_swap : tsp00_SwapKind;
                    desc_cnt    : integer;
                    params_ptr  : tak_parinfarr_ptr);
 
        PROCEDURE
              a04check_mxak (VAR ok : boolean );
 
.CM *-END-* define --------------------------------------
***********************************************************
 
Use     :
 
        FROM
              Scanner : VAK01;
 
        FUNCTION
              a01swap_int2 (old : tsp00_Int2) : tsp00_Int2;
 
      ------------------------------ 
 
        FROM
              Configuration_Parameter : VGG01;
 
        VAR
              g01code           : tgg04_CodeGlobals;
 
      ------------------------------ 
 
        FROM
              RTE-Extension-20 : VSP20;
 
        FUNCTION
              s20or4sw (
                    VAR source     : tsp00_Int4;
                    si             : tsp00_Int4;
                    sourceswap     : tsp00_SwapKind;
                    destswap       : tsp00_SwapKind) : tsp00_Int4;
&       ifdef TRACE
 
      ------------------------------ 
 
        FROM
              Test_Procedures : VTA01;
 
        PROCEDURE
              t01mxerrmsg (
                    nam       : tsp00_Name;
                    int_wrong : tsp00_Int4;
                    int_ok    : tsp00_Int4);
&       endif
 
.CM *-END-* use -----------------------------------------
***********************************************************
 
Synonym :
 
        FUNCTION
              s20or4sw;
 
              tsp00_MoveObj tsp00_Int4
 
.CM *-END-* synonym -------------------------------------
***********************************************************
 
Specification:
 
PROCEDURE
      a04_info_byteswap_codetype:
.sp
Die Shortinfo (short = true) oder Longinfo (short = false)
im  Variablen_part1 des Auftragssegments wird  f?ur  den
Hostrechner entsprechend dem  host_code_type und byte_swap
umgewandelt.
.sp 2
.CM *-END-* specification -------------------------------
***********************************************************
.CM -lll-
Code    :
 
 
(*------------------------------*) 
 
PROCEDURE
      a04_info_byteswap_codetype (
            a_mess_swap : tsp00_SwapKind;
            desc_cnt   : integer;
            params_ptr : tak_parinfarr_ptr);
 
VAR
      i : integer;
 
BEGIN
(* PTS 1102286 E.Z. *)
IF  (a_mess_swap <> g01code.kernel_swap)
THEN
    FOR i := 1 TO desc_cnt DO
        WITH params_ptr^[ i ] DO
            BEGIN
            sp1i_length     := a01swap_int2 (sp1i_length);
            sp1i_in_out_len := a01swap_int2 (sp1i_in_out_len);
            sp1i_bufpos     := s20or4sw (sp1i_bufpos, 1,
                  g01code.kernel_swap, a_mess_swap)
            END
        (*ENDWITH*) 
    (*ENDFOR*) 
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      a04check_mxak( VAR ok : boolean );
 
BEGIN
&ifdef TRACE
ak04check_mxak1 ( ok );
ak04check_mxak2 ( ok );
ak04check_mxak3 ( ok );
ak04check_mxak4 ( ok );
ak04check_mxak5 ( ok );
ak04check_mxak6 ( ok );
ak04check_mxak7 ( ok );
ak04check_mxak8 ( ok );
&endif
END;
 
&ifdef TRACE
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak_simple(
            const_name : tsp00_Name;
            const_size : integer;
            type_size   : integer;
            VAR ok     : boolean );
 
BEGIN
IF  const_size <> type_size
THEN
    BEGIN
    ok := false;
    t01mxerrmsg ( const_name, const_size, type_size );
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak1( VAR ok : boolean );
 
VAR
      correc                    : tak_correcord;
      parskey                   : tak_parskey;
 
BEGIN
(*---- MAX_AK_CORREC ----*)
ak04check_mxak_simple( 'mxak_correc       ', mxak_correc,
      mxak_one_corcolumn * cak_maxcorcolumns
      + sizeof( correc.tc_tables )
      + sizeof( correc.tc_no_of_tables )
      + sizeof( correc.tc_no_of_columns )
      + sizeof( correc.tc_starttable )
      + sizeof( correc.tc_oldstarttable ), ok );
;
(*---- MAX_AK_PARSKEY ----*)
ak04check_mxak_simple( 'mxak_parskey      ', mxak_parskey,
      sizeof( parskey.p_count )
      + sizeof( parskey.p_id )
      + sizeof( parskey.p_kind )
      + sizeof( parskey.p_no ), ok );
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak2( VAR ok : boolean );
 
VAR
      union_header              : tak_unionrecord;
 
BEGIN
(*---- MAX_AK_UNION_HEADER ----*)
ak04check_mxak_simple( 'mxak_union_header ', mxak_union_header,
      sizeof( union_header.uselect_cnt )
      + sizeof( union_header.ucolpos )
      + sizeof( union_header.ures_tree )
      + sizeof( union_header.ures_name )
      + sizeof( union_header.umodul_name )
      + sizeof( union_header.ukeylen )
      + sizeof( union_header.urowno )
      + sizeof( union_header.usubcount )
      + sizeof( union_header.ucntpar )
      + sizeof( union_header.uinsertselect )
      + sizeof( union_header.uappend_all )
      + sizeof( union_header.ufiller ), ok );
;
(*---- CAK_MAX_UNION ----*)
ak04check_mxak_simple( 'cak_max_union     ', cak_max_union,
      ( MAX_RECLEN_GG00
      - cak_sysbufferoffset
      - mxak_union_header ) DIV sizeof( tak_union_entry ), ok );
;
(* PTS 1116801 E.Z. *)
(*---- MXAK_RES_KEYSBUF --*)
ak04check_mxak_simple( 'mxak_res_keysbuf  ', mxak_res_keysbuf,
      sizeof( tak_changerecord )
      + 9 * sizeof ( tsp00_Key ), ok );
;
(*---- MXAK_RESNAME_REC_KEY ----*)
ak04check_mxak_simple ('mxak_resname_rec_k', mxak_resname_rec_key,
      SURROGATE_MXGG00 + 2 + 2 * sizeof (tsp00_KnlIdentifier), ok);
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak3( VAR ok : boolean );
 
VAR
      complexrec                : tak_complexrecord;
      usertabrec                : tak_usertablerecord;
      usagerec                  : tak_usagerecord;
 
BEGIN
(*---- mxak_complexrecminlength ----*)
ak04check_mxak_simple( 'mxak_complexrecmin', mxak_complexrecminlength,
      cak_sysbufferoffset + FILE_ID_MXGG00 + mxak_complex_entry +
      sizeof( complexrec.compcnt )
      + sizeof( complexrec.compmax_sel_cnt ), ok );
;
(*---- CAK_MAXCOMPLEX ----*)
ak04check_mxak_simple( 'cak_maxcomplex    ', cak_maxcomplex,
      ( MAX_RECLEN_GG00 - cak_sysbufferoffset - FILE_ID_MXGG00
      - sizeof( complexrec.compcnt )
      - sizeof( complexrec.compmax_sel_cnt )) DIV
      sizeof( tak_complex_entry ), ok );
;
(*---- CAK_MAX_USERTAB ----*)
ak04check_mxak_simple( 'cak_max_usertab   ', cak_max_usertab,
      ( MAX_RECLEN_GG00 - cak_sysbufferoffset
      -  sizeof( usertabrec.usertabsegmentid )
      - sizeof( usertabrec.usertabfiller )
      - sizeof( usertabrec.usertabnext_exist )
      - sizeof( usertabrec.usertabfull )
      - sizeof( usertabrec.usertabcount ) ) DIV mxak_usertabdef, ok );
;
(*---- MAX_AK_USERTAB_OFFSET ----*)
ak04check_mxak_simple( 'mxak_usertab_offse', mxak_usertab_offset,
      sizeof( usertabrec.usertabsegmentid )
      + sizeof( usertabrec.usertabfiller )
      + sizeof( usertabrec.usertabnext_exist )
      + sizeof( usertabrec.usertabfull )
      + sizeof( usertabrec.usertabcount ), ok );
ak04check_mxak_simple( 'tak_usertablerecor',
      sizeof( tak_usertablerecord ),
      cak_sysbufferoffset
      + mxak_usertab_offset
      + sizeof( usertabrec.usertabdef ), ok );
;
(*---- CAK_MAX_USAGE ----*)
ak04check_mxak_simple( 'cak_max_usage     ', cak_max_usage,
      ( MAX_RECLEN_GG00 - cak_sysbufferoffset
      - sizeof( usagerec.usagesegmentid )
      - sizeof( usagerec.usagefiller )
      - sizeof( usagerec.usagenext_exist )
      - sizeof( usagerec.usagefull )
      - sizeof( usagerec.usagecount ) ) DIV mxak_usertabdef, ok );
;
(*---- MAX_AK_USAGE_OFFSET ----*)
ak04check_mxak_simple( 'mxak_usage_offset ', mxak_usage_offset,
      sizeof( usagerec.usagesegmentid )
      + sizeof( usagerec.usagefiller )
      +  sizeof( usagerec.usagecount )
      +  sizeof( usagerec.usagenext_exist )
      +  sizeof( usagerec.usagefull ), ok );
ak04check_mxak_simple( 'tak_usagerecord le',
      sizeof( tak_usagerecord ),
      cak_sysbufferoffset
      + mxak_usage_offset
      + sizeof( usagerec.usagedef ), ok );
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak4( VAR ok : boolean );
 
VAR
      constraintrec             : tak_constraintrecord;
      param                     : tak_param_info;
 
BEGIN
(*---- CAK_MAXCONSTRAINTSTACK ----*)
ak04check_mxak_simple( 'cak_maxconstraints', cak_maxconstraintstack,
      ( MAX_RECLEN_GG00 - cak_sysbufferoffset
      - sizeof( constraintrec.csegmentid )
      - sizeof( constraintrec.cstack_cnt )
      - sizeof( constraintrec.cvalue_pos )
      - sizeof( constraintrec.cfunction )
      - sizeof( constraintrec.coldrange )
      - sizeof( tak_columnset )
      - sizeof( constraintrec.ccname )
      - sizeof( constraintrec.cstackstart)
      - sizeof( constraintrec.csuffixlen ) ) DIV STACK_ENTRY_MXGG00, ok );
;
ak04check_mxak_simple( 'mxak_param_info   ', mxak_param_info,
      sizeof (param.param_datatype    ) +
      sizeof (param.param_datafrac    ) +
      sizeof (param.param_datalength  ) +
      sizeof (param.param_inoutlength ) +
      sizeof (param.param_in_out      ) +
      sizeof (param.param_com_datatype) +
      sizeof (param.param_state       ) +
      sizeof (param.param_name_len    ) +
      sizeof (param.param_name), ok)
END;
 
(* PTS 1111574 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5a( VAR ok : boolean );
 
VAR
      viewqual_basis    : tak_viewqual_basis_record;
 
BEGIN
(*---- CAK_MAX_VIEWQUAL_TAB ----*)
ak04check_mxak_simple( 'cak_max_viewqual_t', cak_max_viewqual_tab,
      ( MAX_RECLEN_GG00
      - ( sizeof( viewqual_basis.vreclen )
      + sizeof( viewqual_basis.vkeylen )
      + sizeof( viewqual_basis.vvarcol_offset )
      + sizeof( viewqual_basis.vvarcol_cnt )
      + sizeof( viewqual_basis.vsurrogate )
      + sizeof( viewqual_basis.ventrytype )
      + sizeof( viewqual_basis.vlinkage )
      + sizeof( viewqual_basis.vsegmentid )
      + sizeof( viewqual_basis.vjoin_exists )
      + sizeof( viewqual_basis.vstack_exists )
      + sizeof( viewqual_basis.vfiller )
      + sizeof( viewqual_basis.vderived_exists )
      + sizeof( viewqual_basis.vbasetabcnt ) ) )
      DIV sizeof( tak_viewtabdef ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5b( VAR ok : boolean );
 
VAR
      viewqual_join     : tak_viewqual_join_record;
 
BEGIN
(*---- CAK_MAX_VIEWQUAL_JOIN ----*)
ak04check_mxak_simple( 'cak_max_viewqual_j', cak_max_viewqual_join,
      ( MAX_RECLEN_GG00
      - ( sizeof( viewqual_join.vreclen )
      + sizeof( viewqual_join.vkeylen )
      + sizeof( viewqual_join.vvarcol_offset )
      + sizeof( viewqual_join.vvarcol_cnt )
      + sizeof( viewqual_join.vsurrogate )
      + sizeof( viewqual_join.ventrytype )
      + sizeof( viewqual_join.vlinkage )
      + sizeof( viewqual_join.vsegmentid )
      + sizeof( viewqual_join.vjoincount ) ) )
      DIV sizeof( tak_one_viewjoin ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5c( VAR ok : boolean );
 
VAR
      viewqual_stack    : tak_viewqual_stack_record;
 
BEGIN
(*---- CAK_MAX_VIEWQUAL_STACK ----*)
ak04check_mxak_simple( 'cak_max_viewqual_s', cak_max_viewqual_stack,
      ( MAX_RECLEN_GG00
      - ( sizeof( viewqual_stack.vreclen )
      + sizeof( viewqual_stack.vkeylen )
      + sizeof( viewqual_stack.vvarcol_offset )
      + sizeof( viewqual_stack.vvarcol_cnt )
      + sizeof( viewqual_stack.vsurrogate )
      + sizeof( viewqual_stack.ventrytype )
      + sizeof( viewqual_stack.vlinkage )
      + sizeof( viewqual_stack.vsegmentid )
      + sizeof( viewqual_stack.vfiller )
      + sizeof( viewqual_stack.vview_offs )
      + sizeof( viewqual_stack.vstcount )
      + sizeof( viewqual_stack.vdatapos )
      + sizeof( viewqual_stack.vdatalen ) ) )
      DIV sizeof( tgg00_StackEntry ), ok );
;
(*---- CAK_MAX_VIEWQUAL_DATA ----*)
ak04check_mxak_simple( 'cak_max_viewqu_dat', cak_max_viewqual_data,
      cak_max_viewqual_stack * sizeof( tgg00_StackEntry ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5d( VAR ok : boolean );
 
VAR
      viewqual_derived  : tak_viewqual_derivedcol_record;
 
BEGIN
(*---- CAK_MAX_VIEWQUAL_DERIVEDCOL ----*)
ak04check_mxak_simple( 'cak_max_viewqua_dc', cak_max_viewqual_derivedcol,
      ( MAX_RECLEN_GG00
      - ( sizeof( viewqual_derived.vreclen )
      + sizeof( viewqual_derived.vkeylen )
      + sizeof( viewqual_derived.vvarcol_offset )
      + sizeof( viewqual_derived.vvarcol_cnt )
      + sizeof( viewqual_derived.vsurrogate )
      + sizeof( viewqual_derived.ventrytype )
      + sizeof( viewqual_derived.vlinkage )
      + sizeof( viewqual_derived.vsegmentid )
      + sizeof( viewqual_derived.vderivedcnt ) ) )
      DIV sizeof( tak_one_derived_desc ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5e( VAR ok : boolean );
 
VAR
      viewtextrec       : tak_viewtextrecord;
 
BEGIN
(*---- MAX_AK_VIEWTEXT_OFFSET ----*)
ak04check_mxak_simple( 'mxak_viewtext_offs', mxak_viewtext_offset,
      sizeof( viewtextrec.vtsegmentid )
      + sizeof( viewtextrec.vtfromtabcnt )
      + sizeof( viewtextrec.vttabcount )
      + sizeof( viewtextrec.vttextlength )
      + sizeof( viewtextrec.vtnextexist )
      + sizeof( viewtextrec.vtcontext )
      + sizeof( viewtextrec.vtselect_pos ), ok );
ak04check_mxak_simple( 'tak_viewtext lengt',
      sizeof( tak_viewtextrecord ),
      cak_sysbufferoffset
      + mxak_viewtext_offset
      + sizeof( tak_viewtext ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak5( VAR ok : boolean );
 
BEGIN
ak04check_mxak5a (ok);
ak04check_mxak5b (ok);
ak04check_mxak5c (ok);
ak04check_mxak5d (ok);
ak04check_mxak5e (ok);
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak6( VAR ok : boolean );
 
VAR
      sysinforec                : tgg00_SysInfoKey;
      linkrec                   : tak_linkrecord;
 
BEGIN
(*---- CAK_SYSBUFFER_OFFSET ----*)
ak04check_mxak_simple( 'cak_sysbufferoffse', cak_sysbufferoffset,
      sizeof( sysinforec.sstandardkey )
      + sizeof( sysinforec.sreclen )
      + sizeof( sysinforec.skeylen )
      + sizeof( sysinforec.svarcoloffset )
      + sizeof( sysinforec.svarcolcnt ), ok );
;
(*---- CAK_MAXLINKDEF ----*)
ak04check_mxak_simple( 'cak_maxlinkdef    ', cak_maxlinkdef,
      ( sizeof( tak_linkrecord )
      - cak_sysbufferoffset
      - sizeof( linkrec.lseqno )
      - sizeof( linkrec.lsegmentid )) DIV sizeof( tak_linkdef ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak7a (VAR ok : boolean );
 
VAR
      viewdescrec               : tak_viewdescrecord;
 
BEGIN
(*---- CAK_VIEWDESC_OFFSET ----*)
ak04check_mxak_simple( 'cak_viewdesc_offse', cak_viewdesc_offset,
      cak_sysbufferoffset
      + sizeof( viewdescrec.vsegmentid )
      + sizeof( viewdescrec.vdesc_cnt )
      + sizeof( viewdescrec.vdesc_next )
      + sizeof( viewdescrec.vdesc_fill1 )
      + sizeof( viewdescrec.vdesc_fill2 ), ok );
ak04check_mxak_simple( 'tak_viewdescrecord',
      sizeof( tak_viewdescrecord ), cak_viewdesc_offset
      + sizeof( viewdescrec.vdescription ), ok );
;
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak7b (VAR ok : boolean );
 
VAR
      parsinforec               : tak_parsinforecord;
 
BEGIN
(*---- CONTEXTCONSTOFFSET ----*)
ak04check_mxak_simple( 'cak68_contextconst', cak68_contextconstoffset,
      sizeof( tak68_joinparsrecord )
      - mxak68_joinparsbuf
      - cak_sysbufferoffset, ok );
;
(*---- CHECK USERREF KEY -----*)
ak04check_mxak_simple ('userref key       ', sizeof (tak_uref_restkey),
      sizeof (tsp00_KnlIdentifier) - SURROGATE_MXGG00, ok);
;
ak04check_mxak_simple ('mxak_pars_header  ', mxak_pars_header,
      sizeof (parsinforec.p1_fullen        ) +
      sizeof (parsinforec.p1_filler        ) +
      sizeof (parsinforec.p_treeid           ) +
      sizeof (parsinforec.p_pagecnt          ) +
      sizeof (parsinforec.p_resn             ) +
      sizeof (parsinforec.p_modul_name       ) +
      sizeof (parsinforec.p_searchname       ) +
      sizeof (parsinforec.p_mtyp             ) +
      sizeof (parsinforec.p_mtyp2            ) +
      sizeof (parsinforec.p_select           ) +
      sizeof (parsinforec.p_single           ) +
      sizeof (parsinforec.p_tabid            ) +
      sizeof (parsinforec.p_int_res_cnt      ) +
      sizeof (parsinforec.p_joinviewtabcnt   ) +
      sizeof (parsinforec.p_p_no             ) +
      sizeof (parsinforec.p_subcntlevel      ) +
      sizeof (parsinforec.p_posno            ) +
      sizeof (parsinforec.p_statement_kind   ) +
      sizeof (parsinforec.p_bool_states      ) +
      sizeof (parsinforec.p_filler1          ) +
      sizeof (parsinforec.p_precomp_info_byte) +
      sizeof (parsinforec.p_filler2          ) +
      sizeof (parsinforec.p_prepare          ) +
      sizeof (parsinforec.p_function_code    ) +
      sizeof (parsinforec.p_sqlmode          ) +
      sizeof (parsinforec.p_filler0          ) +
      sizeof (parsinforec.p_handling_set     ) +
      sizeof (parsinforec.p_session_isolevel ) +
      sizeof (parsinforec.p_use_sess_isolevel) +
      sizeof (parsinforec.p_resreclen        ) +
      sizeof (parsinforec.p_resinfolen       ) +
      sizeof (parsinforec.p_j_v_keylen       ) +
      sizeof (parsinforec.p_longliteral      ) +
      (* pts 1104055 *)
      sizeof (parsinforec.p_parsing_again    ) +
      sizeof (parsinforec.p_cmd_id           ) +
      sizeof (parsinforec.p_max_infos        ) +
      sizeof (parsinforec.p_cnt_infos        ), ok);
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak7 (VAR ok : boolean );
 
VAR
      cud                       : tak_col_uses_dom;
      dref                      : tak_domainrecord;
      seq                       : tak_sequencerecord;
      syn                       : tak_synonymrecord;
      u                         : tak_userrecord;
 
BEGIN
(*---- MAX_AK_CACHE_DIR_ENTRY ----*)
ak04check_mxak_simple( 'mxak_cache_dir_ent', mxak_cache_dir_entry,
      sizeof( tak_cache_dir_entry ) -
      sizeof(tak_systembuffer), ok);
;
(*---- MAX_AK_MAX_LINKPARSINFO ----*)
ak04check_mxak_simple( 'mxak_linkparsinfo ', mxak_linkparsinfo,
      sizeof( tak_linkparsinfo ), ok );
;
(*---- MAX_AK_MAX_SELFREF_LINK_INFO ----*)
ak04check_mxak_simple( 'mxak_selfref_link_', mxak_selfref_link_info,
      sizeof( tak_selfref_link_info ), ok );
;
(*---- MAX_AK_MAX_ONE_CORCOLUMN ----*)
ak04check_mxak_simple( 'mxak_one_corcolumn', mxak_one_corcolumn,
      sizeof( tak_one_corcolumn ), ok );
;
(*---- MAX_AK_SYSTEMBUF ----*)
ak04check_mxak_simple( 'mxak_systembuf    ', mxak_systembuf,
      sizeof( tak_systembuffer ), ok );
;
(*---- MAX_AK_CONSTRAINTREC ----*)
ak04check_mxak_simple( 'mxak_constraintrec', mxak_constraintrec,
      sizeof( tak_constraintrecord ), ok );
;
(*---- MAX_AK00_OFIELD ----*)
ak04check_mxak_simple( 'mxak00_ofield     ', mxak00_ofield,
      sizeof( tak00_ofield ), ok );
;
(*---- MAX_AK_USERIDREC ----*)
ak04check_mxak_simple( 'mxak_useridrec    ', mxak_useridrec,
      sizeof( tak_useridrecord ), ok );
;
(*---- MAX_AK_VIEWTEXTREC ----*)
ak04check_mxak_simple( 'mxak_viewtextrec  ', mxak_viewtextrec,
      sizeof( tak_viewtextrecord ), ok );
;
(*---- MAX_AK_MULTINDEX ----*)
ak04check_mxak_simple( 'mxak_multindex    ', mxak_multindex,
      sizeof( tak_multindex ), ok );
;
(*---- MAX_AK_USAGEDEF ----*)
ak04check_mxak_simple( 'mxak_usagedef     ', mxak_usagedef,
      sizeof( tak_usagedef ), ok );
;
(*---- MAX_AK_USERTABDEF ----*)
ak04check_mxak_simple( 'mxak_usertabdef   ', mxak_usertabdef,
      sizeof( tak_usertabdef ), ok );
;
(*---- MAX_AK_VIEWTABDEF ----*)
ak04check_mxak_simple( 'mxak_viewtabdef   ', mxak_viewtabdef,
      sizeof( tak_viewtabdef ), ok );
;
(*---- MAX_AK_ONE_VIEWJOIN ----*)
ak04check_mxak_simple( 'mxak_one_viewjoin ', mxak_one_viewjoin,
      sizeof( tak_one_viewjoin ), ok );
;
(*---- MAX_AK_UNION_ENTRY ----*)
ak04check_mxak_simple( 'mxak_union_entry  ', mxak_union_entry,
      sizeof( tak_union_entry ), ok );
;
(*---- MAX_AK_COMPLEX_ENTRY ----*)
ak04check_mxak_simple( 'mxak_complex_entry', mxak_complex_entry,
      sizeof( tak_complex_entry ), ok );
;
(*---- MAX_AK_CHANGE_COLINFO ----*)
ak04check_mxak_simple( 'mxak_change_colinf', mxak_change_colinfo,
      sizeof( tak_change_colinfo ), ok );
;
(*---- MAX_AK_VCOLUMNDESC ----*)
ak04check_mxak_simple( 'mxak_vcolumndesc  ', mxak_vcolumndesc,
      sizeof( tak_vcolumndescription ), ok );
;
(*---- MAX_AK_VTTABDEF ----*)
ak04check_mxak_simple( 'mxak_vttabdef     ', mxak_vttabdef,
      sizeof( tak_vttabdef ), ok );
;
(*---- MAX_AK_SERVERDBRECORD ----*)
ak04check_mxak_simple( 'mxak_serverdbrec  ',mxak_serverdbrec,
      sizeof( tak_serverdbrecord ), ok );
;
(*---- MAX_AK_VIEWTEXT ----*)
ak04check_mxak_simple( 'mxak_viewtext     ', mxak_viewtext,
      MAX_RECLEN_GG00 - cak_sysbufferoffset - mxak_viewtext_offset, ok );
;
(*---- CAK_PAGE80PERCENT ----*)
(* calculated within vak00   *)
;
(*---- MAX_AK_PARSBUF ----*)
ak04check_mxak_simple( 'mxak_parsbuf      ', mxak_parsbuf,
      MAX_RECLEN_GG00 - cak_sysbufferoffset, ok );
;
(*---- MAX_AK_STANDARD_SYSK ----*)
ak04check_mxak_simple( 'mxak_standard_sysk', mxak_standard_sysk,
      SURROGATE_MXGG00 + 4, ok );
;
(*---- MXAK_MAX_BASEREC ----*)
;
(*---- MXAK_AK_MAPSET ----*)
ak04check_mxak_simple( 'mxak_mapset       ', mxak_mapset,
      3 * 2 * cgg04_mapset_entries, ok );
;
ak04check_mxak7a (ok);
ak04check_mxak7b (ok);
(*---- Check Offset of tak_col_uses_dom -----*)
ak04check_mxak_simple ('mxak_col_uses_offs', mxak_col_uses_offset,
      sizeof (cud.cud_reclen) +
      sizeof (cud.cud_keylen) +
      sizeof (cud.cud_varcol_offset ) +
      sizeof (cud.cud_varcol_cnt ) +
      sizeof (cud.cud_surrogate) +
      sizeof (cud.cud_entrytype) +
      sizeof (cud.cud_linkage  ) +
      sizeof (cud.cud_segmentid) +
      sizeof (cud.cud_filler1  ) +
      sizeof (cud.cud_owner    ), ok);
ak04check_mxak_simple ('mxak_domainrec_off', mxak_domainrec_offset,
      sizeof (dref.dom_reclen    ) +
      sizeof (dref.dom_keylen    ) +
      sizeof (dref.dom_varcol_offset ) +
      sizeof (dref.dom_varcol_cnt) +
      sizeof (dref.dom_surrogate ) +
      sizeof (dref.dom_entrytype ) +
      sizeof (dref.dom_seqno     ) +
      sizeof (dref.dom_segmentid ) +
      sizeof (dref.dom_filler    ) +
      sizeof (dref.dom_constraint) +
      sizeof (dref.dom_type_uid  ) +
      sizeof (dref.dom_owner     ) +
      sizeof (dref.dom_date      ) +
      sizeof (dref.dom_time      ), ok);
ak04check_mxak_simple ('mxak_sequence_offs', mxak_sequence_offset,
      sizeof (seq.seq_reclen    ) +
      sizeof (seq.seq_keylen    ) +
      sizeof (seq.seq_varcol_offset ) +
      sizeof (seq.seq_varcol_cnt) +
      sizeof (seq.seq_surrogate ) +
      sizeof (seq.seq_entrytype ) +
      sizeof (seq.seq_linkage   ) +
      sizeof (seq.seq_segmentid ) +
      sizeof (seq.seq_comment   ) +
      sizeof (seq.seq_public    ) +
      sizeof (seq.seq_date      ) +
      sizeof (seq.seq_time      ) +
      sizeof (seq.seq_value     ) +
      sizeof (seq.seq_owner     ) +
      sizeof (seq.seq_info      ), ok);
ak04check_mxak_simple ('mxak_synonym_offse', mxak_synonymrec_offset,
      sizeof (syn.synreclen     ) +
      sizeof (syn.synkeylen     ) +
      sizeof (syn.synvarcol_offset ) +
      sizeof (syn.synvarcol_cnt ) +
      sizeof (syn.synsurrogate  ) +
      sizeof (syn.synentrytype  ) +
      sizeof (syn.synseqno      ) +
      sizeof (syn.synsegmentid  ) +
      sizeof (syn.syn_maxcol    ) +
      sizeof (syn.syn_tablekind ) +
      sizeof (syn.syncomment    ) +
      sizeof (syn.syn_internal  ) + (* PTS 1109242 *)
      sizeof (syn.synfiller0    ) +
      sizeof (syn.syn_tableid   ) +
      sizeof (syn.syn_time      ) +
      sizeof (syn.syn_date      ) +
      sizeof (syn.syn_owner     ) +
      sizeof (syn.syn_authid    ), ok);
ak04check_mxak_simple ('mxak_userrec_offst', mxak_userrec_offset,
      sizeof (u.ureclen       ) +
      sizeof (u.ukeylen       ) +
      sizeof (u.uvarcol_offset) +
      sizeof (u.uvarcol_cnt   ) +
      sizeof (u.usurrogate    ) +
      sizeof (u.uentrytype    ) +
      sizeof (u.useqno        ) +
      sizeof (u.usersegmentid ) +
      sizeof (u.userroleinfo  ) +
      sizeof (u.userchardefcode)+ (* PTS 1117216 E.Z. *)
      sizeof (u.urecordtyp    ) +
      sizeof (u.userkind      ) +
      sizeof (u.usersysdba    ) +
      sizeof (u.uexclusive    ) +
      sizeof (u.ureplication  ) +
      sizeof (u.userfiller2   ) +
      sizeof (u.userfiller3   ) +
      sizeof (u.userpassw     ) +
      sizeof (u.usupportpasspw) +
      sizeof (u.usergroup_id  ) +
      sizeof (u.userowner_id  ) +
      sizeof (u.upwcreatedate ) +
      sizeof (u.upwcreatetime ) +
      sizeof (u.ucreatedate   ) +
      sizeof (u.ucreatetime   ) +
      sizeof (u.uparams       ) +
      sizeof (u.uperm_ref     ) +
      sizeof (u.ucomment      ) +
      sizeof (u.userrolecnt   ) +
      sizeof (u.ualterdate    ) +
      sizeof (u.ualtertime    ), ok);
END;
 
(*------------------------------*) 
 
PROCEDURE
      ak04check_mxak8 (VAR ok : boolean );
 
VAR
      dmli : tak_dml_info;
      len  : integer;
 
BEGIN
WITH dmli DO
    BEGIN
    (*---- MAX_PART_DML_INIT ---------*)
&   ifdef BIT64
    len := 0;
&   else
    len := sizeof(d_alpha_fill1);
&   endif
    ak04check_mxak_simple( 'mxak_part_dml_init', mxak_part_dml_init,
          sizeof(d_colptr) +
          sizeof(d_colbuf) +
          sizeof(d_esparr) +
          sizeof(d_resbuf_addr) +
          len                   +
          (*sizeof(d_alpha_fill1)  *)
          sizeof(d_user               ) +
          sizeof(d_table              ) +
          sizeof(d_column             ) +
          sizeof(d_refname            ) +
          sizeof(d_upd_set            ) +
          sizeof(d_foundset           ) +
          sizeof(d_param_st_index     ) +
          sizeof(d_param_st_begin     ) +
          sizeof(d_first_tab          ) +
          sizeof(d_udt_datatype       ) +
          sizeof(d_pargeslen          ) +
          sizeof(d_align_fill1        ) +
          sizeof(d_index              ) +
          sizeof(d_inoutpos           ) +
          sizeof(d_vppos              ) +
          sizeof(d_exprno             ) +
          sizeof(d_cntfromtab         ) +
          sizeof(d_acttabindex        ) +
          sizeof(d_fieldno            ) +
          sizeof(d_keylen             ) +
          sizeof(d_outcolno           ) +
          sizeof(d_maxlen             ) +
          sizeof(d_movebefore         ) +
          sizeof(d_pos_in_parsbuf     ) +
          sizeof(d_align_fill2        ) +
          sizeof(d_parnum             ) +
          sizeof(d_checkview          ) +
          sizeof(d_join_dml           ) +
          sizeof(d_colindex           ) +
          sizeof(d_reclen             ) +
          sizeof(d_standard           ) +
          sizeof(d_wherepart          ) +
          sizeof(d_range              ) +
          sizeof(d_nullkey            ) +
          sizeof(d_like               ) +
          sizeof(d_key                ) +
          sizeof(d_single             ) +
          sizeof(d_use_order          ) +
          sizeof(d_arith_where        ) +
          sizeof(d_join               ) +
          sizeof(d_reuse              ) +
          sizeof(d_group              ) +
          sizeof(d_having             ) +
          sizeof(d_datatype           ) +
          sizeof(d_allowed            ) +
          sizeof(d_pars_kind          ) +
          sizeof(d_maxcounttabs       ) +
          sizeof(d_basetabno          ) +
          sizeof(d_corr               ) +
          sizeof(d_lowpars            ) +
          sizeof(d_level              ) +
          sizeof(d_index_strat_poss   ) +
          sizeof(d_oldlowpars         ) +
          sizeof(d_prep_corr_cols     ) +
          sizeof(d_like_expression    ) +
          sizeof(d_n_pos              ) +
          sizeof(d_filled_bytes       ) +
          sizeof(d_escape_char        ) +
          sizeof(d_expand             ) +
          sizeof(d_concat             ) +
          sizeof(d_hex                ) +
          sizeof(d_first_union        ) +
          sizeof(d_change_date_time   ) +
          sizeof(d_one_join_phase     ) +
          sizeof(d_check_null_byte    ) +
          sizeof(d_const_value_expr   ) +
          sizeof(d_is_parameter_only  ) +
          sizeof(d_strat_info         ) +
          sizeof(d_truncate           ) +
          sizeof(d_topos              ) +
          sizeof(d_in_method_param    ) +
          sizeof(d_escape             ) +
          sizeof(d_mselect_rescnt     ) +
          sizeof(d_execute_unlock     ) +
          sizeof(d_pseudo_ins_select  ) +
          sizeof(d_viewdesc_linkage   ) +
          sizeof(d_inv_colno          ) +
          sizeof(d_resname            ) +
          sizeof(d_oj_tables          ) +
          sizeof(d_all_count          ) +
          sizeof(d_repl_reskey        ) +
          sizeof(d_mselect_loop_cnt   ) +
          sizeof(d_inv_cnt            ) +
          sizeof(d_single_expr        ) +
          sizeof(d_only_table_scan    ) +
          sizeof(d_in_case_function   ) +
          sizeof(d_where_corr          ) +
          sizeof(d_where_subquery      ) +
          sizeof(d_where_corr_subquery ) +
          sizeof(d_having_subquery     ) +
          sizeof(d_having_corr_subquery) +
          sizeof(d_optimize_setfunction) +
          sizeof(d_type_long_allowed   ) +
          sizeof(d_align_fill4         )
          , ok)
          ;
    (*---- MAX_FULL_DML_INIT ---------*)
&   ifdef BIT64
    len := 0;
&   else
    len := sizeof(d_alpha_fill2) + sizeof(d_alpha_fill4);
&   endif
    ak04check_mxak_simple( 'mxak_full_dml_init', mxak_full_dml_init,
          mxak_part_dml_init +
          sizeof(d_sparr              ) +
          sizeof(d_linkbuf            ) +
          sizeof(d_viewdescbuf        ) +
          sizeof(d_viewtextbuf        ) +
          sizeof(d_literalrec         ) +
          len                           +
          (* sizeof(d_alpha_fill2)    *)
          sizeof(d_tableid            ) +
          sizeof(d_act_node           ) +
          sizeof(d_cntpar             ) +
          sizeof(d_globstate          ) +
          sizeof(d_unchanged_globstate) +
          sizeof(d_pos_result         ) +
          sizeof(d_rowno              ) +
          sizeof(d_resname_found      ) +
          sizeof(d_use_sub            ) +
          sizeof(d_distinct           ) +
          sizeof(d_view               ) +
          sizeof(d_viewusername       ) +
          sizeof(d_viewtablen         ) +
          sizeof(d_subquery           ) +
          sizeof(d_sublevel           ) +
          sizeof(d_subcount           ) +
          sizeof(d_phase_cnt          ) +
          sizeof(d_only_sem_check     ) +
          sizeof(d_union              ) +
          sizeof(d_union_order_n      ) +
          sizeof(d_union_insert       ) +
          sizeof(d_outer_join         ) +
          sizeof(d_repl_nokey_ins_sel ) +
          sizeof(d_is_function_column ) +
          sizeof(d_global_pos_result  ) +
          sizeof(d_longdesc_found     ) +
          sizeof(d_unused1            ) +
          sizeof(d_dist_optim         ) +
          sizeof(d_qual_kind          ) +
          sizeof(d_view_col_list      ) +
          sizeof(d_view_col_node      ) +
          sizeof(d_massdata_ptr       ) +
          sizeof(d_local_massdata_part) +
          sizeof(d_further_fill1      ) +
          sizeof(d_longlitcount       ) +
          sizeof(d_further_fill4      ) +
          sizeof(d_initial_ex_parskey )
          , ok)
          ;
    (*---- FULL_DML_INFO ------*)
&   ifdef BIT64
    len := 0;
&   else
    len := sizeof (d_alpha_fill3);
&   endif
    ak04check_mxak_simple( 'full_dml_info     ', sizeof(tak_dml_info),
          mxak_full_dml_init             +
          sizeof (d_tabarr)              +
          sizeof (d_joins)               +
          sizeof (d_change)              +
          sizeof (d_change_align)        +
          sizeof (d_order_cols)          +
          sizeof (d_group_cols)          +
          sizeof (d_order_or_group_cols) +
          len                            +
          (*sizeof (d_alpha_fill3) *)
          sizeof (d_ch_datatype)         +
          sizeof (d_like_optimize)       +
          sizeof (d_like_part)           +
          sizeof (d_string_column)       +
          (* PTS 1111575 E.Z. *)
          sizeof (d_unused11)            +
          sizeof (d_with_lock_clause)    +
          sizeof (d_first_longdesc_pos)  +
          sizeof (d_cnt_longdesc)        +
          sizeof (d_subquery_node)       +
          sizeof (d_last_filler)         +
          sizeof (d_ins_sel_tabid)
          , ok)
          ;
    END;
(*ENDWITH*) 
END;
 
&endif
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
