/* @lastChanged: "2001-04-17"
 
 * @filename:   vgg17
 * @purpose:    "GG_edit_routines"
 * @release:    7.2.0.0
 * @see:        "-.-"
 *
 * @copyright:  (c) 1999-2004 SAP AG"
 */
 
.tt 1 $SAP$LiveCache$VGG17$
.tt 3 $ElkeZ$GG_edit_routines$2001-04-17$
 
.nf
 
 
    ========== licence begin  GPL
    Copyright (c) 1999-2004 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
***********************************************************
 
Module  : GG_edit_routines
 
Define  :
 
        PROCEDURE
              g17addr_to_line (any_addr : tsp00_Addr (*ptocSynonym void**);
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        FUNCTION
              g17ascii_to_ebcdic (c : char): char;
 
        PROCEDURE
              g17basis_err_to_line (
                    b_err      : tgg00_BasisError;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17bd_use_set_to_line (
                    bd_use     : tgg00_BdUseSet;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17bool_to_line (
                    nam            : tsp00_Name;
                    bool_int       : integer;
                    with_delimiter : boolean;
                    VAR ln_len     : integer;
                    VAR ln         : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17counter_to_line (
                    counter               : tsp00_8ByteCounter;
                    VAR ln_len            : integer;
                    VAR ln                : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17cpp_str_to_line (VAR str : tsp00_Line (*ptocSynonym char**);
                    VAR ln_len            : integer;
                    VAR ln                : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17c2int_to_line (
                    intval          : tsp00_C2;
                    VAR ln_len      : integer;
                    VAR ln          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17c4int_to_line (
                    intval          : tsp00_C4;
                    VAR ln_len      : integer;
                    VAR ln          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17date_to_line (date : tsp00_Date (*ptocSynonym char**);
                    VAR ln_len      : integer;
                    VAR ln          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17dump_state_set (
                    dump_state : tgg00_DumpStateSet;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        FUNCTION
              g17ebcdic_to_ascii (c : char): char;
 
        PROCEDURE
              g17filename (nam      : tsp00_Sname (*ptocSynonym char**);
                    VAR fn          : tgg00_Filename (*ptocSynonym char**);
                    line_indent     : integer;
                    VAR first_ln    : tsp00_Line (*ptocSynonym char**);
                    VAR second_ln   : tsp00_Line (*ptocSynonym char**);
                    VAR third_ln    : tsp00_Line (*ptocSynonym char**);
                    VAR is_third_ln : boolean);
 
        PROCEDURE
              g17filetype_to_line (
                    filetype     : tgg00_FiletypeSet;
                    is_edit_mode : boolean;
                    VAR ln_len   : integer;
                    VAR ln       : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17handling_set_to_line (
                    handling   : tgg00_HandlingSet;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17hexto_line (
                    c          : char;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17identifier_to_line (
                    id          : tsp00_KnlIdentifier;
                    VAR ln_len  : integer;
                    VAR ln      : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17intdate_time (
                    int_date     : tsp00_Int4;
                    int_time     : tsp00_Int4;
                    VAR str_date : tsp00_Date (*ptocSynonym char**);
                    VAR str_time : tsp00_Time (*ptocSynonym char**));
 
        PROCEDURE
              g17int4to_line (
                    intval    : tsp00_Int4;
                    with_zero : boolean;
                    int_len   : integer;
                    ln_pos    : integer;
                    VAR ln    : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17lname_to_line (
                    n           : tsp00_Lname;
                    VAR ln_len  : integer;
                    VAR ln      : tsp00_Line);
 
        PROCEDURE
              g17lockmode_to_line (
                    lock_mode  : tgg00_LockReqMode;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17lockstate_to_line (
                    lock_state : tgg00_LockReqState;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17longreal_to_line (
                    re        : tsp00_Longreal;
                    digits    : integer;
                    pos       : integer;
                    VAR ln    : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17messtype_to_line (
                    mess_type  : tgg00_MessType;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17mess2type_to_line (
                    mess2_type : tgg00_MessType2;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17nameto_line (n : tsp00_Name (*ptocSynonym const char**);
                    VAR ln_len  : integer;
                    VAR ln      : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17obj_state_to_line (
                    obj_state  : tgg00_ObjState;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17obj_transinfo_to_line (
                    transinfo  : tgg00_ObjTransInfo;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17onestackentry (
                    VAR st             : tgg00_StackEntry;
                    entry_index        : integer;
                    VAR ln             : tsp00_Line (*ptocSynonym char**);
                    VAR is_second_ln   : boolean;
                    VAR second_ln      : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17page_ref_to_line (
                    VAR page_ref : tgg91_PageRef;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17pagecheck_to_line (
                    pagecheck  : tgg00_PageCheckType;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17pagemode_to_line (
                    pagemode     : tgg00_PageMode;
                    is_edit_mode : boolean;
                    VAR ln_len   : integer;
                    VAR ln       : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17pagetype_to_line (
                    pagetype   : tgg00_PageType;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17pagetype2_to_line (
                    pagetype2  : tgg00_PageType2;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17paramspec_to_line (
                    data_type  : tsp00_DataType;
                    length     : tsp00_Int2;
                    frac       : tsp00_Uint1;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17parsidinfo_to_line (
                    info       : char;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        FUNCTION
              g17printable_char (c : char) : boolean;
 
        PROCEDURE
              gg17SessionTransToLine (
                    VAR session      : tgg91_SessionNo;
                    VAR transid      : tgg91_TransNo;
                    VAR writetransid : tgg91_TransNo;
                    VAR subtrans     : tgg00_SubtransNo;
                    VAR ln_len       : integer;
                    VAR ln           : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17siteto_line (
                    site           : tgg00_ServerdbNo;
                    VAR ln_len     : integer;
                    VAR ln         : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sname_to_line (
                    n             : tsp00_Sname;
                    VAR ln_len    : integer;
                    VAR ln        : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sp1function_to_line (
                    function_code : tsp00_Int2;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17st1op (
                    op      : tgg00_StackOpType;
                    VAR len : integer;
                    VAR msg : tsp00_Sname (*ptocSynonym char**));
 
        PROCEDURE
              g17st2op_func (
                    op          : tgg00_StackOpFunc;
                    VAR len     : integer;
                    VAR msg     : tsp00_Sname (*ptocSynonym char**));
 
        PROCEDURE
              g17st3op_output (
                    op            : tgg00_StackOpOutput;
                    VAR len       : integer;
                    VAR msg       : tsp00_Sname (*ptocSynonym char**));
 
        PROCEDURE
              g17st4op_build_in (
                    op              : tgg00_StackOpBuildIn;
                    VAR len         : integer;
                    VAR msg         : tsp00_Sname (*ptocSynonym char**));
 
        PROCEDURE
              g17surrogate_to_line (
                    VAR surrogate : tgg00_Surrogate;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17tasktype_to_line (
                    task_type  : tsp00_Uint1;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17tfntype_to_line (
                    tfn        : tgg00_Tfn;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17time_to_line (
                    time            : tsp00_Time;
                    VAR ln_len      : integer;
                    VAR ln          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17trans_state_to_line (
                    trans_state : tgg00_TransState;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17trimint4_to_line (
                    intval     : tsp00_Int4;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17ttfntemp_to_line (
                    ttfn       : tgg00_TfnTemp;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17vftype (
                    ft         : tsp00_VfType;
                    VAR ln_len : tsp00_Int4;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17warning_item_to_line (
                    warning_item : tsp00_Warnings;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
              (*ptocExport hgg17_1.h*)
 
        PROCEDURE
              g17bd_fdesc_to_line (
                    bd_fdesc     : tbd_fileinfo_desc_set;
                    is_edit_mode : boolean;
                    VAR ln_len   : integer;
                    VAR ln       : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17bd_fstate_to_line (
                    bd_fstate    : tbd_file_state_set;
                    is_edit_mode : boolean;
                    VAR ln_len   : integer;
                    VAR ln       : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17bd_task_queue_state_to_line (
                    task_state : tbd02_TaskQueueReason;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
              (*ptocExport hgg17_2.h*)
 
        PROCEDURE
              g17cmdsegm_head (
                    VAR cmdsegm_head : tsp1_segment_header;
                    VAR ln1_len : integer;
                    VAR ln1     : tsp00_Line (*ptocSynonym char**);
                    VAR ln2_len : integer;
                    VAR ln2     : tsp00_Line (*ptocSynonym char**);
                    VAR ln3_len : integer;
                    VAR ln3     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17intern_warn_to_line (
                    warn       : tsp1_warningset_intern;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17packet_head (nam   : tsp00_Sname (*ptocSynonym char**);
                    VAR packet_head : tsp1_packet_header;
                    VAR ln_len      : integer;
                    VAR ln          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17paraminfo_to_line (
                    VAR pi     : tsp1_param_info;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17parthead (
                    VAR part_head : tsp1_part_header;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17returnsegm_head (
                    VAR retsegm_head : tsp1_segment_header;
                    VAR ln1_len      : integer;
                    VAR ln1          : tsp00_Line (*ptocSynonym char**);
                    VAR ln2_len      : integer;
                    VAR ln2          : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sp1cmdmess_to_line (
                    cmd_mess   : tsp1_cmd_mess_type;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sp1partkind_to_line (
                    part_kind  : tsp1_part_kind;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sp1producer_to_line (
                    producer   : tsp1_producer;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17sp1sqlmode_to_line (
                    sqlmode    : tsp1_sqlmode;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
              (*ptocExport hgg17_3.h*)
 
        PROCEDURE
              g17stratenum_to_line (
                    strat      : tgg07_StratEnum;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
              (*ptocExport hgg17_4.h*)
 
        PROCEDURE
              g17bd_data_io_state_to_line (
                    io_state   : tbd02_DataIOState;
                    VAR ln_len : integer;
                    VAR ln     : tsp00_Line (*ptocSynonym char**));
              (*ptocExport hgg17_5.h*)
 
        PROCEDURE
              g17showkind_to_line (
                    show_kind   : tgg00_ShowKind;
                    VAR ln_len  : integer;
                    VAR ln      : tsp00_Line (*ptocSynonym char**));
 
        PROCEDURE
              g17access_mode_set (
                    access_state : tgg07_StratAccessModSet;
                    VAR ln_len   : integer;
                    VAR ln       : tsp00_Line);
 
.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
 
        FROM
              GG_cpp_auxiliary_functions : VGG06;
 
        FUNCTION
              gg06IsDummyRef (VAR PageRef : tgg91_PageRef): boolean;
 
        FUNCTION
              gg06IsNilRef (VAR PageRef : tgg91_PageRef): boolean;
 
        FUNCTION
              gg06RefPno (VAR PageRef : tgg91_PageRef): tsp00_Int4;
 
        FUNCTION
              gg06RefPos (VAR PageRef : tgg91_PageRef): tsp00_Int4;
 
        PROCEDURE
              gg06SessionToLine (
                    VAR SessionNo : tgg91_SessionNo;
                    VAR LineLen : integer;
                    VAR Line    : tsp00_Line);
 
        PROCEDURE
              gg06TransToLine (
                    VAR TransNo : tgg91_TransNo;
                    VAR LineLen : integer;
                    VAR Line    : tsp00_Line);
 
      ------------------------------ 
 
        FROM
              GG_edit_routines : VGG171;
 
        PROCEDURE
              g171_baseerrortext (
                    b_err    : tgg00_BasisError;
                    VAR text : tsp00_Name;
                    textsize : integer);
 
      ------------------------------ 
 
        FROM
              Kernel_move_and_fill : VGG101;
 
        PROCEDURE
              SAPDB_PascalForcedMove (
                    source_upb  : tsp00_Int4;
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
        PROCEDURE
              SAPDB_PascalForcedFill (
                    size        : tsp00_Int4;
                    m           : tsp00_MoveObjPtr;
                    pos         : tsp00_Int4;
                    len         : tsp00_Int4;
                    fillchar    : char);
 
        PROCEDURE
              g10mv (
                    mod_id      : tsp00_C6;
                    mod_num     : tsp00_Int4;
                    source_upb  : tsp00_Int4;
                    dest_upb    : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;
                    src_pos     : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;
                    dest_pos    : tsp00_Int4;
                    length      : tsp00_Int4;
                    VAR e       : tgg00_BasisError);
 
        PROCEDURE
              s10mv (
                    source_upb  : tsp00_Int4;
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : ElkeZ
.sp
.cp 3
Created : 1987-08-26
.sp
.cp 3
.sp
.cp 3
Release :      Date : 2000-11-17
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:
 PTS 1000678 UH
.CM *-END-* specification -------------------------------
.sp 4
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
 
6.2 change requests and errors included here
 
CR 1000053 UH
 
.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:
 
.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
 
 
CONST
      ascii_a          =  97;
      ascii_z          = 122;
      ascii_a_upper    =  65;
      ascii_z_upper    =  90;
      ebcdic_a         = 129;
      ebcdic_z         = 169;
      ebcdic_a_upper   = 193;
      ebcdic_z_upper   = 233;
      ebcdic_j_offset  =  16;
      ebcdic_s_offset  =  33;
      j_offset         =   9;
      s_offset         =  18;
      ascii_colon      =  58;
      ascii_comma      =  44;
      ascii_dollar     =  36;
      ascii_equal      =  61;
      ascii_greater    =  62;
      ascii_less       =  60;
      ascii_plus       =  43;
      ascii_point      =  46;
      ascii_semicolon  =  59;
      ebcdic_colon     = 122;
      ebcdic_comma     = 107;
      ebcdic_dollar    =  91;
      ebcdic_equal     = 126;
      ebcdic_greater   = 110;
      ebcdic_less      =  76;
      ebcdic_plus      =  78;
      ebcdic_point     =  75;
      ebcdic_semicolon =  94;
      (* *)
      mx_packet_indent =   9;
      mx_protline      =  72;
      (* *)
      c_with_delimiter = true;
      c_with_zero      = true;
 
 
(*------------------------------*) 
 
PROCEDURE
      g17addr_to_line (
            any_addr   : tsp00_Addr;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      i : integer;
 
      addr_str : RECORD
            CASE boolean OF
                true:
                    (a : tsp00_Addr);
                false:
                    (c : tsp00_C8);
                END;
            (*ENDCASE*) 
 
 
BEGIN
IF  any_addr = NIL
THEN
    g17sname_to_line ('nil         ', ln_len, ln)
ELSE
    BEGIN
    addr_str.a := any_addr;
    i := 1;
    WHILE i <= sizeof (any_addr) DO
        BEGIN
        g17hexto_line (addr_str.c [i], ln_len, ln);
        i := succ(i)
        END;
    (*ENDWHILE*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
FUNCTION
      g17ascii_to_ebcdic (c : char): char;
 
VAR
      result        : char;
      curr_ascii_a  : integer;
      curr_ebcdic_a : integer;
 
BEGIN
result := chr(0);
IF  (c >= csp_ascii_zero) AND (c <= chr(ord(csp_ascii_zero) + 9))
THEN
    result := chr (ord(csp_ebcdic_zero) + ord(c) - ord(csp_ascii_zero))
ELSE
    BEGIN
    curr_ascii_a := 0;
    IF  (c >= chr(ascii_a)) AND (c <= chr(ascii_z))
    THEN
        BEGIN
        curr_ascii_a  := ascii_a;
        curr_ebcdic_a := ebcdic_a
        END
    ELSE
        IF  (c >= chr(ascii_a_upper)) AND (c <= chr(ascii_z_upper))
        THEN
            BEGIN
            curr_ascii_a  := ascii_a_upper;
            curr_ebcdic_a := ebcdic_a_upper
            END;
        (*ENDIF*) 
    (*ENDIF*) 
    IF  curr_ascii_a > 0
    THEN
        BEGIN
        IF  c < chr (curr_ascii_a + j_offset)
        THEN
            result := chr (curr_ebcdic_a + ord(c) - curr_ascii_a)
        ELSE
            IF  c >= chr (curr_ascii_a + s_offset)
            THEN
                result := chr (curr_ebcdic_a + ebcdic_s_offset +
                      ord(c) - curr_ascii_a - s_offset)
            ELSE
                result := chr (curr_ebcdic_a + ebcdic_j_offset +
                      ord(c) - curr_ascii_a - j_offset)
            (*ENDIF*) 
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END;
(*ENDIF*) 
IF  result = chr(0)
THEN
    CASE c OF
        csp_ascii_close_bracket:
            result := csp_ebcdic_close_bracket;
        csp_ascii_double_quote:
            result := csp_ebcdic_double_quote;
        csp_ascii_hyphen:
            result := csp_ebcdic_hyphen;
        csp_ascii_not:
            result := csp_ebcdic_not;
        csp_ascii_open_bracket:
            result := csp_ebcdic_open_bracket;
        csp_ascii_percent:
            result := csp_ebcdic_percent;
        csp_ascii_question_mark:
            result := csp_ebcdic_question_mark;
        csp_ascii_quote:
            result := csp_ebcdic_quote;
        csp_ascii_star:
            result := csp_ebcdic_star;
        csp_ascii_tilde:
            result := csp_ebcdic_tilde;
        csp_ascii_underline:
            result := csp_ebcdic_underline;
        OTHERWISE
            CASE ord(c) OF
                ascii_colon:
                    result := chr (ebcdic_colon);
                ascii_comma:
                    result := chr (ebcdic_comma);
                ascii_dollar:
                    result := chr (ebcdic_dollar);
                ascii_equal:
                    result := chr (ebcdic_equal);
                ascii_greater:
                    result := chr (ebcdic_greater);
                ascii_less:
                    result := chr (ebcdic_less);
                ascii_plus:
                    result := chr (ebcdic_plus);
                ascii_point:
                    result := chr (ebcdic_point);
                ascii_semicolon:
                    result := chr (ebcdic_semicolon);
                OTHERWISE
                    result := csp_ebcdic_blank
                END
            (*ENDCASE*) 
        END;
    (*ENDCASE*) 
(*ENDIF*) 
g17ascii_to_ebcdic := result
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17basis_err_to_line (
            b_err      : tgg00_BasisError;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      msg : tsp00_Name;
 
BEGIN
msg := bsp_name;
g171_baseerrortext (b_err, msg, sizeof (msg));
IF  msg = bsp_name
THEN
    BEGIN
    msg := 'B_ERR=            ';
    g17nameto_line (msg, ln_len, ln);
    g17trimint4_to_line (ord(b_err), ln_len, ln)
    END
ELSE
    g17nameto_line (msg, ln_len, ln);
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bd_fdesc_to_line (
            bd_fdesc     : tbd_fileinfo_desc_set;
            is_edit_mode : boolean;
            VAR ln_len   : integer;
            VAR ln       : tsp00_Line);
 
BEGIN
IF  (bd_fdesc = [ ]) AND NOT is_edit_mode
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    IF  fid_user_ref in bd_fdesc
    THEN
        g17nameto_line (' user_ref         ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  fid_new_long_col in bd_fdesc
    THEN
        g17nameto_line (' new_long         ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  fid_fill2 in bd_fdesc
    THEN
        g17sname_to_line (' 2          ', ln_len, ln);
    (*ENDIF*) 
    IF  fid_fill3 in bd_fdesc
    THEN
        g17sname_to_line (' 3          ', ln_len, ln);
    (*ENDIF*) 
    IF  fid_fill4 in bd_fdesc
    THEN
        g17sname_to_line (' 4          ', ln_len, ln);
    (*ENDIF*) 
    IF  fid_fill5 in bd_fdesc
    THEN
        g17sname_to_line (' 5          ', ln_len, ln);
    (*ENDIF*) 
    IF  fid_fill6 in bd_fdesc
    THEN
        g17sname_to_line (' 6          ', ln_len, ln);
    (*ENDIF*) 
    IF  fid_fill7 in bd_fdesc
    THEN
        g17sname_to_line (' 7          ', ln_len, ln)
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bd_fstate_to_line (
            bd_fstate    : tbd_file_state_set;
            is_edit_mode : boolean;
            VAR ln_len   : integer;
            VAR ln       : tsp00_Line);
 
BEGIN
IF  (bd_fstate = [ ]) AND NOT is_edit_mode
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    IF  f_unloaded in bd_fstate
    THEN
        g17nameto_line (' unloaded         ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  f_bad in bd_fstate
    THEN
        g17sname_to_line (' bad        ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  f_read_only in bd_fstate
    THEN
        g17sname_to_line (' read_only  ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  f_not_accessible in bd_fstate
    THEN
        g17sname_to_line (' not_acc    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  f_write_off in bd_fstate
    THEN
        g17sname_to_line (' write_off  ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  f_no_tree_index in bd_fstate
    THEN
        g17sname_to_line (' no_idx     ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln)
        (*ENDIF*) 
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bd_use_set_to_line (
            bd_use     : tgg00_BdUseSet;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      old_ln_len : integer;
 
BEGIN
IF  bd_use = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    old_ln_len := ln_len;
    IF  bd_release_acc in bd_use
    THEN
        g17sname_to_line (' release_acc', ln_len, ln);
    (*ENDIF*) 
    IF  bd_write_acc in bd_use
    THEN
        g17sname_to_line (' write_acc  ', ln_len, ln);
    (*ENDIF*) 
    IF  bd_load_nolog in bd_use
    THEN
        g17sname_to_line (' load_nolog ', ln_len, ln);
    (*ENDIF*) 
    IF  ln_len > mx_protline
    THEN
        BEGIN
        IF  ln_len <= sizeof (ln)
        THEN
            SAPDB_PascalForcedFill (sizeof(ln), @ln,
                  old_ln_len+1, ln_len - old_ln_len, ' ');
        (*ENDIF*) 
        ln_len := old_ln_len;
        IF  bd_release_acc in bd_use
        THEN
            g17sname_to_line (' rel        ', ln_len, ln);
        (*ENDIF*) 
        IF  bd_write_acc in bd_use
        THEN
            g17sname_to_line (' wri        ', ln_len, ln);
        (*ENDIF*) 
        IF  bd_load_nolog in bd_use
        THEN
            g17sname_to_line (' loa        ', ln_len, ln)
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  bd_sync_with_svp in bd_use
    THEN
        g17sname_to_line (' svp sync   ', ln_len, ln);
    (*ENDIF*) 
    IF  bd_fill4 in bd_use
    THEN
        g17sname_to_line (' 4          ', ln_len, ln);
    (*ENDIF*) 
    IF  bd_fill5 in bd_use
    THEN
        g17sname_to_line (' 5          ', ln_len, ln);
    (*ENDIF*) 
    IF  bd_fill6 in bd_use
    THEN
        g17sname_to_line (' 6          ', ln_len, ln);
    (*ENDIF*) 
    IF  bd_fill7 in bd_use
    THEN
        g17sname_to_line (' 7          ', ln_len, ln)
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bd_data_io_state_to_line (
            io_state   : tbd02_DataIOState;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE io_state OF
    iosNone_ebd02:
        msg := 'none        ';
    iosUserIO_ebd02:
        msg := 'UserIO      ';
    iosServerIO_ebd02:
        msg := 'ServerIO    ';
    iosBlocked_ebd02:
        msg := 'Blocked     ';
    OTHERWISE
        BEGIN
        msg := 'STATE =     ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(io_state), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bd_task_queue_state_to_line (
            task_state : tbd02_TaskQueueReason;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE task_state OF
    tqrNil_ebd02:
        msg := 'nil_state   ';
    tqrShareLock_ebd02:
        msg := 'ShareLock   ';
    tqrExclusiveLock_ebd02:
        msg := 'ExclLock    ';
    OTHERWISE
        BEGIN
        msg := 'STATE =     ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(task_state), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17bool_to_line (
            nam            : tsp00_Name;
            bool_int       : integer;
            with_delimiter : boolean;
            VAR ln_len     : integer;
            VAR ln         : tsp00_Line);
 
BEGIN
IF  bool_int <> ord (false)
THEN
    BEGIN
    IF  with_delimiter
    THEN
        gg17delimiter_to_line (ln_len, ln);
    (*ENDIF*) 
    IF  bool_int = ord (true)
    THEN
        g17nameto_line (nam, ln_len, ln)
    ELSE
        BEGIN
        g17nameto_line (nam, ln_len, ln);
        g17sname_to_line (' = ***      ', ln_len, ln);
        ln_len := ln_len + 1;
        g17trimint4_to_line (bool_int, ln_len, ln)
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17cmdsegm_head (
            VAR cmdsegm_head : tsp1_segment_header;
            VAR ln1_len : integer;
            VAR ln1     : tsp00_Line;
            VAR ln2_len : integer;
            VAR ln2     : tsp00_Line;
            VAR ln3_len : integer;
            VAR ln3     : tsp00_Line);
 
CONST
      mx_indent = 3;
 
BEGIN
SAPDB_PascalForcedFill (sizeof (ln1), @ln1, 1, sizeof (ln1), ' ');
ln2     := ln1;
ln3     := ln1;
ln1_len := mx_indent;
ln2_len := mx_packet_indent;
ln3_len := mx_packet_indent;
WITH cmdsegm_head DO
    BEGIN
    g17sp1cmdmess_to_line (sp1c_mess_type, ln1_len, ln1);
    g17sname_to_line (' SEGMENT    ', ln1_len, ln1);
    ln1_len := ln1_len + 1;
    g17trimint4_to_line (sp1s_own_index, ln1_len, ln1);
    g17sname_to_line ('   (        ', ln1_len, ln1);
    g17trimint4_to_line (sp1s_no_of_parts, ln1_len, ln1);
    IF  sp1s_no_of_parts = 1
    THEN
        g17sname_to_line (' part, len: ', ln1_len, ln1)
    ELSE
        g17sname_to_line (' parts, len:', ln1_len, ln1);
    (*ENDIF*) 
    ln1_len := ln1_len + 1;
    g17trimint4_to_line (sp1s_segm_len, ln1_len, ln1);
    IF  sp1s_segm_offset <> 0
    THEN
        BEGIN
        g17sname_to_line (', offset:   ', ln1_len, ln1);
        ln1_len := ln1_len + 1;
        g17trimint4_to_line (sp1s_segm_offset, ln1_len, ln1)
        END;
    (*ENDIF*) 
    ln1_len      := ln1_len + 1;
    ln1 [ln1_len] := ')';
    (*------- second line -------*)
    g17sp1sqlmode_to_line (sp1c_sqlmode, ln2_len, ln2);
    gg17delimiter_to_line (ln2_len, ln2);
    g17sp1producer_to_line (sp1c_producer, ln2_len, ln2);
    (* *)
    g17bool_to_line ('ignore_costwarning',
          ord (sp1c_ignore_costwarning),
          c_with_delimiter, ln2_len, ln2);
    (*------- third line -------*)
    g17bool_to_line ('commit_immediately', ord(sp1c_commit_immediately),
          NOT c_with_delimiter, ln3_len, ln3);
    (* *)
    g17bool_to_line ('with_info         ', ord (sp1c_with_info),
          (ln3_len > mx_packet_indent), ln3_len, ln3);
    (* *)
    g17bool_to_line ('prepare           ', ord (sp1c_prepare),
          (ln3_len > mx_packet_indent), ln3_len, ln3);
    (* *)
    g17bool_to_line ('mass_cmd          ', ord (sp1c_mass_cmd),
          (ln3_len > mx_packet_indent), ln3_len, ln3);
    (* *)
    g17bool_to_line ('parsing_again     ', ord (sp1c_parsing_again),
          (ln3_len > mx_packet_indent), ln3_len, ln3);
    (* *)
    g17bool_to_line ('selfetch off      ',
          ord (sp1co_selfetch_off in sp1c_command_options),
          (ln3_len > mx_packet_indent), ln3_len, ln3);
    IF  ln3_len = mx_packet_indent
    THEN
        ln3_len := 0
    (*ENDIF*) 
    END
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17counter_to_line (
            counter               : tsp00_8ByteCounter;
            VAR ln_len            : integer;
            VAR ln                : tsp00_Line);
 
BEGIN
(* PTS 1103743 JA 1999-08-25 *)
&ifdef BIT64
gg17_int8_to_line (counter, ln_len, ln);
&else
gg17_realcounter_to_line (counter, ln_len, ln);
&endif
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17cpp_str_to_line (
            VAR str               : tsp00_Line;
            VAR ln_len            : integer;
            VAR ln                : tsp00_Line);
 
VAR
      str_pos : integer;
 
BEGIN
str_pos := 1;
WHILE (str_pos < sizeof (str)) AND (str [str_pos] <> chr (0))
      AND (ln_len < sizeof (ln)) DO
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := str [str_pos];
    str_pos     := str_pos + 1
    END
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17c2int_to_line (
            intval          : tsp00_C2;
            VAR ln_len      : integer;
            VAR ln          : tsp00_Line);
 
BEGIN
IF  intval [1] <> chr (255)
THEN
    g17trimint4_to_line (ord (intval [1]) * 256 + ord (intval [2]),
          ln_len, ln)
ELSE
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := 'x';
    g17hexto_line (intval [1], ln_len, ln);
    g17hexto_line (intval [2], ln_len, ln)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17c4int_to_line (
            intval          : tsp00_C4;
            VAR ln_len      : integer;
            VAR ln          : tsp00_Line);
 
BEGIN
IF  intval [1] <> chr (255)
THEN
    g17trimint4_to_line (ord (intval [1]) * 16777216
          +              ord (intval [2]) *    65536
          +              ord (intval [3]) *      256
          +              ord (intval [4]),
          ln_len, ln)
ELSE
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := 'x';
    g17hexto_line (intval [1], ln_len, ln);
    g17hexto_line (intval [2], ln_len, ln);
    g17hexto_line (intval [3], ln_len, ln);
    g17hexto_line (intval [4], ln_len, ln)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17date_to_line (
            date            : tsp00_Date;
            VAR ln_len      : integer;
            VAR ln          : tsp00_Line);
 
BEGIN
ln [ln_len+ 1] := date [1];
ln [ln_len+ 2] := date [2];
ln [ln_len+ 3] := date [3];
ln [ln_len+ 4] := date [4];
ln [ln_len+ 5] := '-';
ln [ln_len+ 6] := date [5];
ln [ln_len+ 7] := date [6];
ln [ln_len+ 8] := '-';
ln [ln_len+ 9] := date [7];
ln [ln_len+10] := date [8];
ln_len         := ln_len + 10
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17dump_state_set (
            dump_state : tgg00_DumpStateSet;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
IF  dump_state = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    IF  dumpAll_egg00 IN dump_state
    THEN
        g17sname_to_line (' all        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpA51dump_egg00 IN dump_state
    THEN
        g17sname_to_line (' a51        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpBdLocklist_egg00 IN dump_state
    THEN
        g17sname_to_line (' b77        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpConfiguration_egg00 IN dump_state
    THEN
        g17sname_to_line (' g01        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpConverter_egg00 IN dump_state
    THEN
        g17sname_to_line (' b10        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpConverterCache_egg00 IN dump_state
    THEN
        g17sname_to_line (' b16        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpDataCache_egg00 IN dump_state
    THEN
        g17sname_to_line (' b20        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpFbm_egg00 IN dump_state
    THEN
        g17sname_to_line (' b11        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpBackup_egg00 in dump_state
    THEN
        g17sname_to_line (' k38        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpKbLocklist_egg00 IN dump_state
    THEN
        g17sname_to_line (' k52        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpLogWriter_egg00 IN dump_state
    THEN
        g17sname_to_line (' k55        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpLogCache_egg00 IN dump_state
    THEN
        g17sname_to_line (' k56        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpNetServer_egg00 IN dump_state
    THEN
        g17sname_to_line (' k90        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpRestartRec_egg00 IN dump_state
    THEN
        g17sname_to_line (' k57        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpTransformation_egg00 IN dump_state
    THEN
        g17sname_to_line (' g02        ', ln_len, ln);
    (*ENDIF*) 
    IF  dumpUtility_egg00 IN dump_state
    THEN
        g17sname_to_line (' k35        ', ln_len, ln);
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
FUNCTION
      g17ebcdic_to_ascii (c : char): char;
 
VAR
      result        : char;
      curr_ascii_a  : integer;
      curr_ebcdic_a : integer;
 
BEGIN
result := chr(0);
IF  (c >= csp_ebcdic_zero) AND (c <= chr(ord(csp_ebcdic_zero) + 9))
THEN
    result := chr (ord(csp_ascii_zero) + ord(c) - ord(csp_ebcdic_zero))
ELSE
    BEGIN
    curr_ascii_a := 0;
    IF  (c >= chr(ebcdic_a)) AND (c <= chr(ebcdic_z))
    THEN
        BEGIN
        curr_ascii_a  := ascii_a;
        curr_ebcdic_a := ebcdic_a
        END
    ELSE
        IF  (c >= chr(ebcdic_a_upper)) AND (c <= chr(ebcdic_z_upper))
        THEN
            BEGIN
            curr_ascii_a  := ascii_a_upper;
            curr_ebcdic_a := ebcdic_a_upper
            END;
        (*ENDIF*) 
    (*ENDIF*) 
    IF  curr_ascii_a > 0
    THEN
        BEGIN
        IF  c < chr (curr_ebcdic_a + j_offset)
        THEN
            result := chr (curr_ascii_a + ord(c) - curr_ebcdic_a)
        ELSE
            IF  (c >= chr (curr_ebcdic_a + ebcdic_j_offset))
                AND
                (c < chr (curr_ebcdic_a + ebcdic_j_offset
                + s_offset - j_offset))
            THEN
                result := chr (curr_ascii_a + j_offset +
                      ord(c) - curr_ebcdic_a - ebcdic_j_offset)
            ELSE
                IF  c >= chr (curr_ebcdic_a + ebcdic_s_offset)
                THEN
                    result := chr (curr_ascii_a + s_offset +
                          ord(c) - curr_ebcdic_a - ebcdic_s_offset)
                (*ENDIF*) 
            (*ENDIF*) 
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END;
(*ENDIF*) 
IF  result = chr(0)
THEN
    CASE c OF
        csp_ebcdic_close_bracket:
            result := csp_ascii_close_bracket;
        csp_ebcdic_double_quote:
            result := csp_ascii_double_quote;
        csp_ebcdic_hyphen:
            result := csp_ascii_hyphen;
        csp_ebcdic_not:
            result := csp_ascii_not;
        csp_ebcdic_open_bracket:
            result := csp_ascii_open_bracket;
        csp_ebcdic_percent:
            result := csp_ascii_percent;
        csp_ebcdic_question_mark:
            result := csp_ascii_question_mark;
        csp_ebcdic_quote:
            result := csp_ascii_quote;
        csp_ebcdic_star:
            result := csp_ascii_star;
        csp_ebcdic_tilde:
            result := csp_ascii_tilde;
        csp_ebcdic_underline:
            result := csp_ascii_underline;
        OTHERWISE
            CASE ord(c) OF
                ebcdic_colon:
                    result := chr (ascii_colon);
                ebcdic_comma:
                    result := chr (ascii_comma);
                ebcdic_dollar:
                    result := chr (ascii_dollar);
                ebcdic_equal:
                    result := chr (ascii_equal);
                ebcdic_greater:
                    result := chr (ascii_greater);
                ebcdic_less:
                    result := chr (ascii_less);
                ebcdic_plus:
                    result := chr (ascii_plus);
                ebcdic_point:
                    result := chr (ascii_point);
                ebcdic_semicolon:
                    result := chr (ascii_semicolon);
                OTHERWISE
                    result := csp_ascii_blank
                END
            (*ENDCASE*) 
        END;
    (*ENDCASE*) 
(*ENDIF*) 
g17ebcdic_to_ascii := result
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17filename (
            nam             : tsp00_Sname;
            VAR fn          : tgg00_Filename;
            line_indent     : integer;
            VAR first_ln    : tsp00_Line;
            VAR second_ln   : tsp00_Line;
            VAR third_ln    : tsp00_Line;
            VAR is_third_ln : boolean);
 
VAR
      print_id : boolean;
      i        : integer;
      ln_len   : integer;
      sn       : tsp00_Sname;
      n        : tsp00_Name;
      file_id  : tgg00_FileId;
 
BEGIN
is_third_ln := false;
SAPDB_PascalForcedFill (sizeof (third_ln), @third_ln, 1, sizeof (third_ln), ' ');
first_ln := third_ln; (* blankline *)
s10mv (sizeof (nam), sizeof (first_ln),
      @nam, 1, @first_ln, line_indent + 1, sizeof (nam));
ln_len                := line_indent + sizeof (nam) + 2;
first_ln [ln_len]     := ':';
ln_len                := ln_len + 1;
file_id.fileName_gg00 := fn;
IF  (file_id.fileTabId_gg00     = cgg_sys1_catalog_id) AND
    (file_id.fileTfn_gg00       = tfnSys_egg00       ) AND
    (file_id.fileTfnNo_gg00 [1] = chr (0)            )
THEN
    sn := 'SYS1CAT     '
ELSE
    IF  (file_id.fileTabId_gg00     = cgg_sys2_catalog_id) AND
        (file_id.fileTfn_gg00       = tfnSys_egg00       ) AND
        (file_id.fileTfnNo_gg00 [1] = chr (0)            )
    THEN
        sn := 'SYS2CAT     '
    ELSE
        sn := bsp_sname;
    (*ENDIF*) 
(*ENDIF*) 
IF  sn <> bsp_sname
THEN
    g17sname_to_line (sn, ln_len, first_ln)
ELSE
    BEGIN
    print_id := false;
    IF  (file_id.fileTfn_gg00       = tfnTable_egg00) AND
        (file_id.fileTfnNo_gg00 [1] = chr (0)  )
    THEN
        BEGIN
        print_id := true;
        g17sname_to_line ('TABID       ', ln_len, first_ln)
        END
    ELSE
        IF  (file_id.fileTfn_gg00 in [tfnOmsInv_egg00, tfnMulti_egg00])
        THEN
            BEGIN
            print_id := true;
            CASE file_id.fileTfn_gg00 OF
                tfnOmsInv_egg00:
                    n := 'OMS_INV(          ';
                tfnMulti_egg00:
                    n := 'MULT_INV(         ';
                END;
            (*ENDCASE*) 
            g17nameto_line (n, ln_len, first_ln);
            g17trimint4_to_line (ord (file_id.fileTfnNo_gg00 [1]),
                  ln_len, first_ln);
            ln_len := ln_len + 1;
            first_ln [ln_len] := ')'
            END
        ELSE
            IF  (file_id.fileTfn_gg00       = tfnShortScol_egg00) AND
                (file_id.fileTfnNo_gg00 [1] = chr (0)       )
            THEN
                BEGIN
                print_id := true;
                g17sname_to_line ('SCOL        ', ln_len, first_ln)
                END
            ELSE
                IF  (file_id.fileTfn_gg00       = tfnColumn_egg00) AND
                    (file_id.fileTfnNo_gg00 [1] = chr (0)   )
                THEN
                    BEGIN
                    print_id := true;
                    g17sname_to_line ('COLUMN      ',
                          ln_len, first_ln)
                    END
                ELSE
                    IF  (file_id.fileTfn_gg00 = tfnObj_egg00)
                        OR
                        (file_id.fileTfn_gg00 = tfnObjBefore_egg00)
                        OR
                        (file_id.fileTfn_gg00 = tfnContObj_egg00)
                    THEN
                        BEGIN
                        print_id := true;
                        IF  file_id.fileTfn_gg00 = tfnObj_egg00
                        THEN
                            BEGIN
                            IF  file_id.fileObjFileType_gg00 = oftFixLenObjFile_egg00
                            THEN
                                g17sname_to_line ('OBJ         ', ln_len, first_ln)
                            ELSE
                                g17sname_to_line ('VAR OBJ     ', ln_len, first_ln)
                            (*ENDIF*) 
                            END
                        ELSE
                            IF  (file_id.fileTfn_gg00 = tfnObjBefore_egg00)
                            THEN
                                g17sname_to_line ('OBJ_BEFORE  ', ln_len, first_ln)
                            ELSE
                                g17sname_to_line ('CONT OBJ    ', ln_len, first_ln);
                            (*ENDIF*) 
                        (*ENDIF*) 
                        ln_len := ln_len + 1;
                        g17trimint4_to_line (file_id.fileObjFileNo_gg00, ln_len, first_ln);
                        first_ln [ln_len+1] := '/'
                        END
                    ELSE
                        IF  (file_id.fileTfn_gg00 = tfnInvSubtree_egg00)
                        THEN
                            BEGIN
                            print_id := true;
                            g17sname_to_line ('InvSubtree  ', ln_len, first_ln)
                            END;
                        (*ENDIF*) 
                    (*ENDIF*) 
                (*ENDIF*) 
            (*ENDIF*) 
        (*ENDIF*) 
    (*ENDIF*) 
    IF  print_id
    THEN
        BEGIN
        ln_len := ln_len + 1;
        g17surrogate_to_line (file_id.fileTabId_gg00, ln_len, first_ln)
        END
    ELSE
        IF  (file_id.fileTfn_gg00 = tfnLog_egg00    ) OR
            (file_id.fileTfn_gg00 = tfnTempLog_egg00)
        THEN
            BEGIN
            IF  file_id.fileTfnLog_gg00 = tfnlSavepoint_egg00
            THEN
                BEGIN
                g17sname_to_line ('SAVEPOINT   ', ln_len, first_ln);
                ln_len := ln_len + 1
                END
            ELSE
                BEGIN
                IF  file_id.fileTfn_gg00 = tfnTempLog_egg00
                THEN
                    g17sname_to_line ('Temp        ', ln_len, first_ln);
                (*ENDIF*) 
                g17sname_to_line ('LOG         ', ln_len, first_ln);
                IF  file_id.fileTfnLog_gg00 = tfnlCreateIndex_egg00
                THEN
                    g17sname_to_line ('(index)     ', ln_len, first_ln);
                (*ENDIF*) 
                g17sname_to_line (' trans      ', ln_len, first_ln)
                END;
            (*ENDIF*) 
            gg06TransToLine (file_id.fileTransId_gg00, ln_len, first_ln)
            END
        ELSE
            BEGIN
            g17tfntype_to_line (file_id.fileTfn_gg00, ln_len, first_ln);
            first_ln [ln_len+1] := ';';
            ln_len := ln_len + 2;
            g17sname_to_line ('fileTfnNo = ', ln_len, first_ln);
            ln_len := ln_len + 1;
            g17trimint4_to_line (ord(file_id.fileTfnNo_gg00 [1]), ln_len,
                  first_ln);
            CASE file_id.fileTfn_gg00 OF
                tfnAux_egg00, tfnTempAux_egg00:
                    BEGIN
                    first_ln [ln_len+1] := ';';
                    ln_len := ln_len + 2;
                    g17sname_to_line ('count_aux = ', ln_len, first_ln);
                    ln_len := ln_len + 1;
                    g17trimint4_to_line (file_id.fileAuxCnt_gg00, ln_len, first_ln);
                    is_third_ln := true;
                    second_ln   := third_ln; (* blankline *)
                    ln_len      := line_indent + sizeof (nam) + 3;
                    g17sname_to_line ('trans:      ', ln_len, second_ln);
                    ln_len := ln_len + 1;
                    gg06TransToLine (file_id.fileTransId_gg00, ln_len, second_ln)
                    END;
                tfnTemp_egg00:
                    BEGIN
                    first_ln [ln_len+1] := ';';
                    ln_len := ln_len + 2;
                    g17ttfntemp_to_line  (file_id.fileTfnTemp_gg00, ln_len, first_ln);
                    is_third_ln := true;
                    second_ln   := third_ln; (* blankline *)
                    ln_len      := line_indent + sizeof (nam) + 3;
                    g17sname_to_line ('session:    ', ln_len, second_ln);
                    ln_len := ln_len + 1;
                    gg06SessionToLine (file_id.fileSession_gg00, ln_len, second_ln);
                    IF  file_id.fileTfnTemp_gg00 = ttfnLogPosList_egg00
                    THEN
                        BEGIN
                        ln_len := ln_len + 1;
                        second_ln [ln_len] := '.';
                        gg06TransToLine (file_id.fileTempTrans_gg00, ln_len, second_ln)
                        END
                    ELSE
                        BEGIN
                        second_ln [ln_len+1] := ';';
                        ln_len := ln_len + 2;
                        g17sname_to_line ('fid =       ', ln_len, second_ln);
                        ln_len := ln_len + 1;
                        g17trimint4_to_line (file_id.fileTempCnt_gg00, ln_len, second_ln)
                        END
                    (*ENDIF*) 
                    END;
                OTHERWISE
                    ln_len := ln_len
                END
            (*ENDCASE*) 
            END
        (*ENDIF*) 
    (*ENDIF*) 
    END;
(*ENDIF*) 
ln_len := line_indent + sizeof (nam) + 3;
g17sname_to_line ('fn:         ', ln_len, third_ln);
ln_len := ln_len + 1;
FOR i := 1 TO sizeof (fn) DO
    BEGIN
    g17hexto_line (fn [i], ln_len, third_ln);
    WITH file_id DO
        IF  (i = sizeof(fileTfn_gg00) + sizeof(fileTfnNo_gg00)                         ) OR
            (i = sizeof(fileTfn_gg00) + sizeof(fileTfnNo_gg00) + sizeof(fileTabId_gg00))
        THEN
            ln_len := ln_len + 1
        (*ENDIF*) 
    (*ENDWITH*) 
    END;
(*ENDFOR*) 
IF  NOT is_third_ln
THEN
    second_ln := third_ln
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17filetype_to_line (
            filetype     : tgg00_FiletypeSet;
            is_edit_mode : boolean;
            VAR ln_len   : integer;
            VAR ln       : tsp00_Line);
 
BEGIN
IF  (filetype = [ ]) AND NOT is_edit_mode
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    IF  ftsTemp_egg00 in filetype
    THEN
        g17sname_to_line (' temp       ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsPerm_egg00 in filetype
    THEN
        g17sname_to_line (' perm       ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsByteStr_egg00 in filetype
    THEN
        g17sname_to_line (' bytestr    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsConcurrent_egg00 in filetype
    THEN
        g17sname_to_line (' concurr    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsShared_egg00 in filetype
    THEN
        g17sname_to_line (' shared     ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsDynamic_egg00 in filetype
    THEN
        g17sname_to_line (' dynamic    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsObject_egg00 in filetype
    THEN
        g17sname_to_line (' object     ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (* PTS 1117381 E.Z. *)
        (*ENDIF*) 
    (*ENDIF*) 
    IF  ftsArchive_egg00 in filetype
    THEN
        g17sname_to_line (' archive    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17nameto_line (' -                ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(* PTS 1111575 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      g17handling_set_to_line (
            handling   : tgg00_HandlingSet;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      old_ln_len : integer;
 
BEGIN
IF  handling = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    old_ln_len := ln_len;
    IF  hsWithoutLock_egg00 in handling
    THEN
        g17sname_to_line (' WithoutLock', ln_len, ln);
    (*ENDIF*) 
    IF  hsConsistentLock_egg00 in handling
    THEN
        g17sname_to_line (' ConsistLock', ln_len, ln);
    (*ENDIF*) 
    IF  hsCollisionTest_egg00 in handling
    THEN
        g17sname_to_line (' CollisnTest', ln_len, ln);
    (*ENDIF*) 
    IF  hsIntentExcl_egg00 in handling
    THEN
        g17sname_to_line (' IntentExcl ', ln_len, ln);
    (*ENDIF*) 
    IF  hsNoWait_egg00 in handling
    THEN
        g17sname_to_line (' NoWait     ', ln_len, ln);
    (*ENDIF*) 
    IF  hsNoLog_egg00 in handling
    THEN
        g17sname_to_line (' NoLog      ', ln_len, ln);
    (*ENDIF*) 
    IF  hsTempLock_egg00 in handling
    THEN
        g17sname_to_line (' TempLock   ', ln_len, ln);
    (*ENDIF*) 
    IF  hsPermLock_egg00 in handling
    THEN
        g17sname_to_line (' PermLock   ', ln_len, ln);
    (*ENDIF*) 
    IF  hsOptimisticLock_egg00 in handling
    THEN
        g17sname_to_line (' OptimLock  ', ln_len, ln);
    (*ENDIF*) 
    IF  hsCreateFile_egg00 in handling
    THEN
        g17sname_to_line (' CreateFile ', ln_len, ln);
    (*ENDIF*) 
    IF  hsNoTreeBalance_egg00 in handling
    THEN
        g17sname_to_line (' NoTreeBalan', ln_len, ln);
    (*ENDIF*) 
    IF  hsDropFile_egg00 in handling
    THEN
        g17sname_to_line (' DropFile   ', ln_len, ln);
    (*ENDIF*) 
    IF  hsIgnoreLock_egg00 in handling (* PTS 1108174 *)
    THEN
        g17sname_to_line (' IgnoreLock ', ln_len, ln);
    (*ENDIF*) 
    IF  ln_len > mx_protline
    THEN
        BEGIN
        IF  ln_len <= sizeof (ln)
        THEN
            SAPDB_PascalForcedFill (sizeof(ln), @ln,
                  old_ln_len+1, ln_len - old_ln_len, ' ');
        (*ENDIF*) 
        ln_len := old_ln_len;
        IF  hsWithoutLock_egg00 in handling
        THEN
            g17sname_to_line (' wi         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsConsistentLock_egg00 in handling
        THEN
            g17sname_to_line (' con        ', ln_len, ln);
        (*ENDIF*) 
        IF  hsCollisionTest_egg00 in handling
        THEN
            g17sname_to_line (' col        ', ln_len, ln);
        (*ENDIF*) 
        IF  hsIntentExcl_egg00 in handling
        THEN
            g17sname_to_line (' in         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsNoWait_egg00 in handling
        THEN
            g17sname_to_line (' now        ', ln_len, ln);
        (*ENDIF*) 
        IF  hsNoLog_egg00 in handling
        THEN
            g17sname_to_line (' nol        ', ln_len, ln);
        (*ENDIF*) 
        IF  hsTempLock_egg00 in handling
        THEN
            g17sname_to_line (' te         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsPermLock_egg00 in handling
        THEN
            g17sname_to_line (' pe         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsOptimisticLock_egg00 in handling
        THEN
            g17sname_to_line (' op         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsCreateFile_egg00 in handling
        THEN
            g17sname_to_line (' cr         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsNoTreeBalance_egg00 in handling
        THEN
            g17sname_to_line (' nt         ', ln_len, ln);
        (*ENDIF*) 
        IF  hsIgnoreLock_egg00 in handling (* PTS 1108174 *)
        THEN
            g17sname_to_line (' il         ', ln_len, ln);
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  hsFill11_egg00 in handling
    THEN
        g17sname_to_line (' 11         ', ln_len, ln);
    (*ENDIF*) 
    IF  hsFill14_egg00 in handling
    THEN
        g17sname_to_line (' 14         ', ln_len, ln);
    (*ENDIF*) 
    IF  hsFill15_egg00 in handling
    THEN
        g17sname_to_line (' 15         ', ln_len, ln)
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17hexto_line (
            c          : char;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      hex_byte : ARRAY [1..2] OF integer;
      i        : integer;
 
BEGIN
IF  ord(c) > 0
THEN
    BEGIN
    hex_byte [1] := ord (c) DIV 16;
    hex_byte [2] := ord (c) MOD 16;
    FOR i := 1 TO 2 DO
        IF  hex_byte [i] > 9
        THEN
            ln [ln_len+i] := chr (ord ('A') - 10 + hex_byte [i])
        ELSE
            ln [ln_len+i] := chr (ord ('0')      + hex_byte [i])
        (*ENDIF*) 
    (*ENDFOR*) 
    END
ELSE
    BEGIN
    ln [ln_len+1] := '0';
    ln [ln_len+2] := '0'
    END;
(*ENDIF*) 
ln_len := ln_len + 2
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17identifier_to_line (
            id          : tsp00_KnlIdentifier;
            VAR ln_len  : integer;
            VAR ln      : tsp00_Line);
 
VAR
      len : integer;
 
BEGIN
IF  id <> bsp_knl_identifier
THEN
    BEGIN
    len := sizeof (id);
    WHILE id [len] = ' ' DO
        len := len - 1;
    (*ENDWHILE*) 
    IF  ln_len + len <= sizeof (ln)
    THEN
        BEGIN
        s10mv (sizeof (id), sizeof (ln), @id, 1, @ln, ln_len + 1, len);
        ln_len := ln_len + len
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17intdate_time (
            int_date     : tsp00_Int4;
            int_time     : tsp00_Int4;
            VAR str_date : tsp00_Date;
            VAR str_time : tsp00_Time);
 
VAR
 
      univ_ln : RECORD
            CASE integer OF
                1:
                    (ln : tsp00_Line);
                2:
                    (d  : tsp00_Date);
                3:
                    (t  : tsp00_Time)
                END;
            (*ENDCASE*) 
 
 
BEGIN
g17int4to_line (int_date, c_with_zero, sizeof(str_date), 1, univ_ln.ln);
str_date := univ_ln.d;
g17int4to_line (int_time, c_with_zero, sizeof(str_time), 1, univ_ln.ln);
str_time := univ_ln.t;
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17intern_warn_to_line (
            warn       : tsp1_warningset_intern;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      curr_warn : tsp1_intern_warning;
 
BEGIN
IF  warn = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    FOR curr_warn := sp1iw_warn0 TO sp1iw_warn15 DO
        IF  curr_warn in warn
        THEN
            BEGIN
            ln_len := ln_len + 1;
            g17trimint4_to_line (ord (curr_warn), ln_len, ln)
            END
        (*ENDIF*) 
    (*ENDFOR*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17int4to_line (
            intval    : tsp00_Int4;
            with_zero : boolean;
            int_len   : integer;
            ln_pos    : integer;
            VAR ln    : tsp00_Line);
 
VAR
      rem : tsp00_Int4;
      i   : integer;
 
BEGIN
IF  intval < 0
THEN
    rem := -intval
ELSE
    rem := intval;
(*ENDIF*) 
FOR i := int_len DOWNTO 1 DO
    BEGIN
    ln [ln_pos + i - 1] := chr ((rem MOD 10) + ord('0'));
    rem := rem DIV 10
    END;
(*ENDFOR*) 
IF  rem > 0
THEN (* overflow *)
    ln [ln_pos] := '*'
ELSE
    BEGIN
    i := ln_pos;
    IF  with_zero
    THEN
        BEGIN
        IF  (intval < 0) AND (ln [ln_pos] = '0')
        THEN
            i := i + 1
        (*ENDIF*) 
        END
    ELSE
        WHILE (i < ln_pos + int_len - 1) AND (ln [i] = '0') DO
            BEGIN
            ln [i] := ' ';
            i := i + 1
            END;
        (*ENDWHILE*) 
    (*ENDIF*) 
    IF  intval < 0
    THEN
        BEGIN
        IF  i > ln_pos
        THEN
            ln [i-1] := '-'
        ELSE
            (* underflow *)
            ln [ln_pos] := '*'
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17lname_to_line (
            n           : tsp00_Lname;
            VAR ln_len  : integer;
            VAR ln      : tsp00_Line);
 
VAR
      len : integer;
 
BEGIN
IF  n <> bsp_lname
THEN
    BEGIN
    len := sizeof (n);
    WHILE n [len] = ' ' DO
        len := len - 1;
    (*ENDWHILE*) 
    IF  ln_len + len <= sizeof (ln)
    THEN
        BEGIN
        s10mv (sizeof (n), sizeof (ln), @n, 1, @ln, ln_len + 1, len);
        ln_len := ln_len + len
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17lockmode_to_line (
            lock_mode  : tgg00_LockReqMode;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE lock_mode OF
    lckFree_egg00:
        msg := 'lckFree     ';
    lckSysShare_egg00:
        msg := 'lckSysShare ';
    lckSysExcl_egg00:
        msg := 'lckSysExcl  ';
    lckTabShare_egg00:
        msg := 'lckTabShare ';
    lckTabExcl_egg00:
        msg := 'lckTabExcl  ';
    lckRowShare_egg00:
        msg := 'lckRowShare ';
    lckRowExcl_egg00:
        msg := 'lckRowExcl  ';
    lckRowOptimistic_egg00:
        msg := 'lckRowOptim ';
    OTHERWISE
        BEGIN
        msg := 'LOCK=       ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(lock_mode), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17lockstate_to_line (
            lock_state : tgg00_LockReqState;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      old_ln_len : integer;
 
BEGIN
IF  lock_state = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    old_ln_len := ln_len;
    IF  lrsConsistent_egg00 in lock_state
    THEN
        g17sname_to_line (' Consistent ', ln_len, ln);
    (*ENDIF*) 
    IF  lrsEotExcl_egg00 in lock_state
    THEN
        g17sname_to_line (' EotExcl    ', ln_len, ln);
    (*ENDIF*) 
    IF  lrsTemp_egg00 in lock_state
    THEN
        g17sname_to_line (' Temp       ', ln_len, ln);
    (*ENDIF*) 
    IF  ln_len > mx_protline
    THEN
        BEGIN
        IF  ln_len <= sizeof (ln)
        THEN
            SAPDB_PascalForcedFill (sizeof(ln), @ln,
                  old_ln_len+1, ln_len - old_ln_len, ' ');
        (*ENDIF*) 
        ln_len := old_ln_len;
        IF  lrsConsistent_egg00 in lock_state
        THEN
            g17sname_to_line (' Co         ', ln_len, ln);
        (*ENDIF*) 
        IF  lrsEotExcl_egg00 in lock_state
        THEN
            g17sname_to_line (' Eo         ', ln_len, ln);
        (*ENDIF*) 
        IF  lrsTemp_egg00 in lock_state
        THEN
            g17sname_to_line (' Te         ', ln_len, ln);
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17messtype_to_line (
            mess_type  : tgg00_MessType;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE mess_type OF
    m_nil:
        msg := 'nil               ';
    m_begin:
        msg := 'begin             ';
    m_cancel:
        msg := 'cancel            ';
    m_change:
        msg := 'change            ';
    m_check_database:
        msg := 'check_database    ';
    m_close:
        msg := 'close             ';
    m_column:
        msg := 'column            ';
    m_column_statistic:
        msg := 'column_statistic  ';
    m_commit:
        msg := 'commit            ';
    m_complex:
        msg := 'complex           ';
    m_connect:
        msg := 'connect           ';
    m_create_file:
        msg := 'create_file       ';
    m_create_index:
        msg := 'create_index      ';
    m_create_table:
        msg := 'create_table      ';
    m_delete:
        msg := 'delete            ';
    m_describe:
        msg := 'describe          ';
    m_destroy_temp:
        msg := 'destroy_temp      ';
    m_diagnose:
        msg := 'diagnose          ';
    m_down:
        msg := 'down              ';
    m_drop:
        msg := 'drop              ';
    m_end:
        msg := 'end               ';
    m_eval:
        msg := 'eval              ';
    m_fetch:
        msg := 'fetch             ';
    m_flush:
        msg := 'flush             ';
    m_get:
        msg := 'get               ';
    m_usage:
        msg := 'usage             ';
    m_index_statistic:
        msg := 'index_statistic   ';
    m_insert:
        msg := 'insert            ';
    m_insert_select:
        msg := 'insert_select     ';
    m_key:
        msg := 'key               ';
    m_lock:
        msg := 'lock              ';
    m_mend:
        msg := 'mend              ';
    m_mfetch:
        msg := 'mfetch            ';
    m_move:
        msg := 'move              ';
    m_outcopy:
        msg := 'outcopy           ';
    m_partial_rollback:
        msg := 'partial_rollback  ';
    (* PTS 1107952 E.Z. *)
    m_procedure :
        msg := 'procedure         ';
    m_release:
        msg := 'release           ';
    m_reload:
        msg := 'reload            ';
    m_restart:
        msg := 'restart           ';
    m_restore:
        msg := 'restore           ';
    m_return_error:
        msg := 'return_error      ';
    m_return_result:
        msg := 'return_result     ';
    m_rollback:
        msg := 'rollback          ';
    m_save:
        msg := 'save              ';
    m_savepoint:
        msg := 'savepoint         ';
    m_select:
        msg := 'select            ';
    m_select_row:
        msg := 'select_row        ';
    m_set:
        msg := 'set               ';
    m_set_replication:
        msg := 'set_replication   ';
    m_show:
        msg := 'show              ';
    m_shutdown:
        msg := 'shutdown          ';
    m_stamp:
        msg := 'stamp             ';
    m_succ_file_version:
        msg := 'succ_file_version ';
    m_table_statistic:
        msg := 'table_statistic   ';
    m_union:
        msg := 'union             ';
    m_unload:
        msg := 'unload            ';
    m_unlock:
        msg := 'unlock            ';
    m_up:
        msg := 'up                ';
    m_update:
        msg := 'update            ';
    m_update_rec:
        msg := 'update_rec        ';
    m_verify:
        msg := 'verify            ';
    m_nextval:
        msg := 'nextval           ';
    m_history:
        msg := 'history           ';
    m_sharedSQLParseid:
        msg := 'sharedSQLParseid  ';
    m_new:
        msg := 'new               ';
    m_get_object:
        msg := 'get_object        ';
    m_save_parallel:
        msg := 'save_parallel     ';
    m_restore_parallel:
        msg := 'restore_parallel  ';
    m_autosave:
        msg := 'autosave          ';
    m_create_index_parallel:
        msg := 'create_index_paral';
    m_migrate_obj_files:
        msg := 'mig oms data      ';
    OTHERWISE
        BEGIN
        msg := 'MESS=             ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(mess_type), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17mess2type_to_line (
            mess2_type : tgg00_MessType2;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE mess2_type  OF
    mm_nil:
        msg := 'nil         ';
    mm_clear:
        msg := 'clear       ';
    mm_close:
        msg := 'close       ';
    mm_consistent:
        msg := 'consistent  ';
    mm_compare_record:
        msg := 'compare_rec ';
    mm_config:
        msg := 'config      ';
    mm_coordinator:
        msg := 'coordinator ';
    mm_database:
        msg := 'database    ';
    mm_destroy_temp:
        msg := 'destroy_temp';
    mm_device:
        msg := 'device      ';
    mm_device_restore:
        msg := 'dev_restore ';
    mm_direct:
        msg := 'direct      ';
    mm_distributed:
        msg := 'distributed ';
    mm_dump:
        msg := 'dump        ';
    mm_empty:
        msg := 'empty       ';
    mm_end_read_only:
        msg := 'end_readonly';
    mm_expand:
        msg := 'expand      ';
    mm_file:
        msg := 'file        ';
    mm_first:
        msg := 'first       ';
    mm_first_join_select:
        msg := 'first_join  ';
    mm_fread:
        msg := 'fread       ';
    mm_index:
        msg := 'index       ';
    mm_join_with_last_tab :
        msg := 'join_last_ta';
    mm_keep_lock:
        msg := 'keep_lock   ';
    mm_key:
        msg := 'key         ';
    mm_last:
        msg := 'last        ';
    mm_last_rowno:
        msg := 'last rowno  ';
    mm_lock:
        msg := 'lock        ';
    mm_lock_timeout:
        msg := 'lock_timeout';
    mm_log:
        msg := 'log         ';
    mm_object_id:
        msg := 'object_id   ';
    mm_next:
        msg := 'next        ';
    mm_nokey:
        msg := 'nokey       ';
    mm_ok_not_allowed :
        msg := 'ok_not_allow';
    mm_optimize:
        msg := 'optimize    ';
    mm_outcopy:
        msg := 'outcopy     ';
    mm_pages:
        msg := 'pages       ';
    mm_parse:
        msg := 'parse       ';
    mm_participant:
        msg := 'participant ';
    mm_down:
        msg := 'down        ';
    mm_prefix:
        msg := 'prefix      ';
    mm_prev:
        msg := 'prev        ';
    mm_qual:
        msg := 'qual        ';
    mm_standby:
        msg := 'standby     ';
    mm_read:
        msg := 'read        ';
    mm_rollback:
        msg := 'rollback    ';
    mm_same:
        msg := 'same        ';
    mm_search:
        msg := 'search      ';
    mm_string:
        msg := 'string      ';
    mm_subtrans:
        msg := 'subtrans    ';
    mm_table:
        msg := 'table       ';
    mm_test:
        msg := 'test        ';
    mm_trans:
        msg := 'trans       ';
    mm_trunc:
        msg := 'trunc       ';
    mm_user:
        msg := 'user        ';
    mm_with_functions:
        msg := 'with_fnction';
    mm_with_join:
        msg := 'with_join   ';
    mm_write:
        msg := 'write       ';
    mm_write_off:
        msg := 'write_off   ';
    mm_write_on:
        msg := 'write_on    ';
    mm_trigger :
        msg := 'trigger     ';
    mm_ignore_duplicates:
        msg := 'ignore_dupl ';
    mm_update_duplicates:
        msg := 'upd_duplicat';
    mm_acknowledge:
        msg := 'acknowledge ';
    mm_newtape:
        msg := 'newtape     ';
    mm_ignore:
        msg := 'ignore      ';
    mm_abort:
        msg := 'abort       ';
    mm_object:
        msg := 'object      ';
    mm_free4:
        msg := 'what is this';
    mm_new_write:
        msg := 'new_write   ';
    mm_new_read:
        msg := 'new_read    ';
    mm_parallel:
        msg := 'parallel    ';
    mm_checkpoint:
        msg := 'checkpoint  ';
    (* PTS 1106798 JA 2000-05-30 *)
    mm_operator_join:
        msg := 'some_join_op';
    mm_first_operator_join:
        msg := 'frst_join_op';
    mm_last_operator_join:
        msg := 'last_join_op';
    OTHERWISE
        BEGIN
        msg := 'MESS2=      ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(mess2_type), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17nameto_line (
            n           : tsp00_Name;
            VAR ln_len  : integer;
            VAR ln      : tsp00_Line);
 
VAR
      len : integer;
 
BEGIN
IF  n <> bsp_name
THEN
    BEGIN
    len := sizeof (n);
    WHILE n [len] = ' ' DO
        len := len - 1;
    (*ENDWHILE*) 
    IF  ln_len + len <= sizeof (ln)
    THEN
        BEGIN
        s10mv (sizeof (n), sizeof (ln), @n, 1, @ln, ln_len + 1, len);
        ln_len := ln_len + len
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17obj_state_to_line (
            obj_state  : tgg00_ObjState;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE obj_state OF
    obsFree_egg00:
        msg := 'obsFree     ';
    obsFreeAfterEot_egg00:
        msg := 'obsFreeEot  ';
    obsReserved_egg00:
        msg := 'obsReserved ';
    obsKeyReserved_egg00:
        msg := 'obsKeyResrvd';
    obsOccupied_egg00:
        msg := 'obsOccupied ';
    obsDelBeforeImage_egg00:
        msg := 'obsDelBefore';
    obsUpdBeforeImage_egg00:
        msg := 'obsUpdBefore';
    OTHERWISE
        BEGIN
        msg := 'Obj State=  ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(obj_state), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17obj_transinfo_to_line (
            transinfo  : tgg00_ObjTransInfo;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
(* PTS 1126292 FF 2003-DEC-16 *)
g17sname_to_line ('HistRef:    ', ln_len, ln);
ln_len := ln_len+ 1;
g17page_ref_to_line (transinfo.otrBeforeRef_gg00, ln_len, ln);
g17sname_to_line (' LockTrIdx: ', ln_len, ln);
ln_len := ln_len+ 1;
g17trimint4_to_line (transinfo.otrLockTransIndex_gg00, ln_len, ln);
g17sname_to_line (' LockTrans: ', ln_len, ln);
ln_len := ln_len+ 1;
gg06TransToLine (transinfo.otrLockTransId_gg00, ln_len, ln);
g17sname_to_line (' UpdTrans:  ', ln_len, ln);
ln_len := ln_len+ 1;
gg06TransToLine (transinfo.otrUpdTransId_gg00, ln_len, ln)
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17onestackentry (
            VAR st             : tgg00_StackEntry;
            entry_index        : integer;
            VAR ln             : tsp00_Line;
            VAR is_second_ln   : boolean;
            VAR second_ln      : tsp00_Line);
 
VAR
      is_ecol_pos : boolean;
      skip_all    : boolean;
      skip_elen   : boolean;
      skip_ecol   : boolean;
      i           : integer;
      len         : integer;
      ln_pos      : integer;
      n           : tsp00_Sname;
      msg_etype   : tsp00_Sname;
      msg_epos    : tsp00_C9;
      msg_elen    : tsp00_C9;
 
BEGIN
is_second_ln := false;
SAPDB_PascalForcedFill (sizeof (ln), @ln, 1, sizeof (ln), ' ');
second_ln := ln;
g17int4to_line (entry_index, NOT c_with_zero, 4, 1, ln);
ln_pos      := 6;
is_ecol_pos := false;
skip_all    := false;
skip_elen   := false;
skip_ecol   := false;
msg_etype   := bsp_sname;
msg_epos    := '     epos';
msg_elen    := ' elen_var';
CASE st.etype OF
    st_dummy:
        msg_etype := 'DUMMY       ';
    st_assign :
        msg_etype := 'ASSIGN      ';
    st_bool:
        BEGIN
        msg_etype := 'BOOL        ';
        skip_elen := true;
        skip_ecol := true
        END;
    st_case:
        msg_etype := 'CASE        ';
    (* PTS 1116801 E.Z. *)
    st_column:
        BEGIN
        msg_etype := 'COLUMN      ';
        msg_epos  := '    colno';
        msg_elen  := '      len'
        END;
    st_date:
        msg_etype := 'DATE        ';
    st_datetime_arith:
        msg_etype := 'DATETIM ARIT';
    st_dyn_sql :
        BEGIN
        msg_etype := 'DYNAMIC_SQL ';
        skip_elen := true;
        skip_ecol := true
        END;
    st_fixcol:
        BEGIN
        msg_etype := 'FIX COL     ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_fixinv:
        BEGIN
        msg_etype := 'FIX INV     ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_fixkey:
        BEGIN
        msg_etype := 'FIX KEY     ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_fixprimkey:
        BEGIN
        msg_etype := 'FIX PRIMKEY ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_format:
        BEGIN
        msg_etype := 'FORMAT      ';
        skip_elen := true;
        skip_ecol := true;
        END;
    st_func:
        IF  st.eop_func = op_f_none
        THEN
            msg_etype := 'LASTFUNCTION'
        ELSE
            g17st2op_func (st.eop_func, len, msg_etype);
        (*ENDIF*) 
    st_get_subquery:
        BEGIN
        msg_etype := 'GET SUBQUERY';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_short_scol:
        msg_etype := 'SHORT SCOL  ';
    st_jump_false:
        BEGIN
        msg_etype := 'JUMP FALSE  ';
        msg_epos  := 'stack_ptr';
        msg_elen  := 'jump true';
        (*    skip_elen := st.eop <> op_jmp_ins_upd; *)
        (*    skip_ecol := true                      *)
        END;
    st_jump_output:
        BEGIN
        msg_etype := 'JUMP OUT    ';
        msg_epos  := 'stack_ptr';
        msg_elen  := 'offset   ';
        skip_ecol := true
        END;
    st_jump_true:
        BEGIN
        msg_etype := 'JUMP TRUE   ';
        msg_epos  := 'stack_ptr';
        skip_elen := true;
        skip_ecol := true
        END;
    st_jump_absolute:
        BEGIN
        msg_etype := 'JUMP ABSOLUT';
        msg_epos  := '    count';
        skip_elen := true;
        skip_ecol := true;
        END;
    st_language :
        BEGIN
        msg_etype := 'LANGUAGE    ';
        msg_epos  := '  buf_pos';
        msg_elen  := '      len'
        END;
    st_localsysdba:
        msg_etype := 'LOCALSYSDBA ';
    st_mass_compare :
        BEGIN
        IF  st.ecol_tab [1] = chr(1)
        THEN
            msg_etype := 'M-COMP  ALL '
        ELSE
            msg_etype := 'M-COMP  ANY ';
        (*ENDIF*) 
        msg_elen := '    count';
        skip_ecol := true;
        END;
    st_noround:
        BEGIN
        msg_etype := 'NOROUND     ';
        msg_epos  := '      len';
        msg_elen  := '     frac'
        END;
    st_not_needed:
        BEGIN
        msg_etype := 'NOT NEEDED  ';
        skip_all  := true;
        END;
    st_object_col:
        BEGIN
        msg_etype := 'OBJECT_COL  ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_old_fixcol:
        BEGIN
        msg_etype := 'OLD FIX COL ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_old_fixkey:
        BEGIN
        msg_etype := 'OLD FIX KEY ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_old_varcol:
        BEGIN
        msg_etype := 'OLD VAR COL ';
        msg_epos  := ' varColNo';
        msg_elen  := '      len'
        END;
    st_old_varkey:
        BEGIN
        msg_etype := 'OLD VAR KEY ';
        msg_epos  := '      pos';
        msg_elen  := '   maxLen';
        END;
    st_old_varlongchar:
        BEGIN
        msg_etype := 'OLD VARLONGC';
        msg_epos  := 'varLongNo';
        msg_elen  := '   maxLen'
        END;
    st_op:
        BEGIN
        g17st1op (st.eop, len, msg_etype);
        CASE st.eop OF
            op_in, op_not_in:
                msg_elen := '    count';
            op_fixed, op_round :
                BEGIN
                msg_epos := '      len';
                msg_elen := '     frac';
                END;
            op_like, op_not_like:
                BEGIN
                msg_epos := '  sqlmode';
                skip_ecol := true;
                END;
            op_digits :
                BEGIN
                msg_epos := '   unused';
                msg_elen := '      len';
                END;
            op_nextval :
                BEGIN
                msg_epos := '     epos';
                skip_ecol := true;
                END;
            op_serial :
                skip_all := false;
            op_swap :
                BEGIN
                msg_epos  := '   offset';
                skip_ecol := true;
                END;
            op_updated :
                BEGIN
                is_ecol_pos := true;
                skip_ecol   := true;
                END;
            OTHERWISE
                skip_all := true
            END
        (*ENDCASE*) 
        END;
    st_build_in_func:
        BEGIN
        g17st4op_build_in (st.eop_build_in, len, msg_etype);
        IF  st.eop_build_in = op_b_substr
        THEN
            msg_epos := 'sourcelen'
        ELSE
            IF  (st.eop_build_in = op_b_format_change) OR
                (st.eop_build_in = op_b_check_format)
            THEN
                BEGIN
                skip_all := true;
                gg17bfc_stack (st, ln);
                END;
            (*ENDIF*) 
        (*ENDIF*) 
        END;
    st_output,
    st_output_build_rec,
    st_output_join,
    st_output_catalog :
        BEGIN
        msg_epos  := '  out_pos';
        msg_elen  := '      len';
        IF  st.eop_out = op_o_none
        THEN
            n := 'OUTPUT      '
        ELSE
            g17st3op_output (st.eop_out, len, n);
        (*ENDIF*) 
        IF  st.etype = st_output_build_rec
        THEN
            BEGIN
            msg_etype := 'REC         ';
            FOR i := 1 TO sizeof (msg_etype) - 4 DO
                msg_etype [i+4] := n [i]
            (*ENDFOR*) 
            END
        ELSE
            IF  st.etype = st_output_join
            THEN
                BEGIN
                is_ecol_pos := true;
                msg_etype   := 'JOIN        ';
                FOR i := 1 TO sizeof (msg_etype) - 5 DO
                    msg_etype [i+5] := n [i]
                (*ENDFOR*) 
                END
            ELSE
                IF  st.etype = st_output_catalog (* h.b. PTS 1105136 *)
                THEN
                    BEGIN
                    msg_etype   := 'CAT         ';
                    FOR i := 1 TO sizeof (msg_etype) - 4 DO
                        msg_etype [i+4] := n [i]
                    (*ENDFOR*) 
                    END
                ELSE
                    msg_etype := n
                (*ENDIF*) 
            (*ENDIF*) 
        (*ENDIF*) 
        END;
    st_output_param :
        BEGIN
        msg_etype := 'OUTPUT PARAM';
        END;
    st_parseid :
        msg_etype := 'PARSEID     ';
    st_param :
        msg_etype := 'FUNC PARAM  ';
    st_rec_output:
        msg_etype := 'REC OUTPUT  ';
    st_result:
        BEGIN
        msg_etype := 'RESULT      ';
        msg_epos  := '      len';
        msg_elen  := '     frac'
        END;
    st_rowno :
        msg_etype := 'ROWNO       ';
    st_strat:
        BEGIN
        msg_etype := 'STRATEGY    ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_long_scol:
        msg_etype := 'LONG SCOL   ';
    st_stop :
        msg_etype := 'STOP        ';
    st_subquery :
        BEGIN
        msg_epos  := '   fn_pos';
        msg_elen  := ' fieldlen';
        IF  st.ecol_tab [1] = chr(1)
        THEN
            BEGIN
            IF  st.ecol_tab [2] = chr(1)
            THEN
                msg_etype := 'EXISTS      '
            ELSE
                msg_etype := 'SUBQUERY ALL'
            (*ENDIF*) 
            END
        ELSE
            IF  st.ecol_tab [2] = chr(1)
            THEN
                msg_etype := 'SUBQUERY ANY'
            ELSE
                msg_etype := 'SUBQUERY    '
            (*ENDIF*) 
        (*ENDIF*) 
        END;
    st_sum_length :
        msg_etype := 'SUM LENGTH  ';
    st_surrogate :
        msg_etype := 'SURROGATE   ';
    st_sysdba:
        msg_etype := 'SYSDBA      ';
    st_time:
        msg_etype := 'TIME        ';
    st_timestamp:
        msg_etype := 'TIME STAMP  ';
    st_timezone:
        msg_etype := 'TIMEZONE    ';
    st_truth:
        BEGIN
        msg_etype := 'TRUTH CHECK ';
        skip_elen := true;
        skip_ecol := true
        END;
    st_uid:
        msg_etype := 'UID         ';
    st_user:
        msg_etype := 'USER        ';
    st_usergroup:
        msg_etype := 'USER GROUP  ';
    (* PTS 1116175 E.Z. *)
    st_utcdate :
        msg_etype := 'UTCDATE     ';
    (* PTS 1109925 E.Z. *)
    st_utcdiff:
        msg_etype := 'UTCDIFF     ';
    st_value_idx:
        BEGIN
        IF  st.ecol_tab[ 2 ] = chr( 0 )
        THEN
            msg_etype := 'VALUEIDX    '
        ELSE
            msg_etype := 'VALUEIDX CEX';
        (*ENDIF*) 
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_value:
        BEGIN
        IF  st.ecol_tab[ 2 ] = chr( 0 )
        THEN
            msg_etype := 'VALUE       '
        ELSE
            msg_etype := 'VALUE CEXPRE';
        (*ENDIF*) 
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_varcol:
        BEGIN
        msg_etype := 'VAR COL     ';
        msg_epos  := ' varColNo';
        msg_elen  := '   maxLen'
        END;
    st_varinv:
        BEGIN
        msg_etype := 'VAR INV     ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    st_varkey:
        BEGIN
        msg_etype := 'VAR KEY     ';
        msg_epos  := '      pos';
        msg_elen  := '   maxLen';
        END;
    st_varlongchar:
        BEGIN
        msg_etype := 'VAR LONGCHAR';
        msg_epos  := 'varLongNo';
        msg_elen  := '   maxLen'
        END;
    st_varprimkey:
        BEGIN
        msg_etype := 'VAR PRIMKEY ';
        msg_epos  := '      pos';
        msg_elen  := '      len'
        END;
    OTHERWISE
        msg_etype := bsp_sname
    END;
(*ENDCASE*) 
IF  msg_etype = bsp_sname
THEN
    BEGIN
    len       := ln_pos;
    msg_etype := 'ETYPE=      ';
    IF  ln_pos + 5 <= sizeof (ln)
    THEN
        s10mv (sizeof (msg_etype), sizeof (ln), @msg_etype, 1,
              @ln, ln_pos, 6);
    (*ENDIF*) 
    ln_pos := ln_pos + 6;
    g17int4to_line (ord(st.etype), c_with_zero, 3, ln_pos, ln);
    ln_pos := len + sizeof (msg_etype) + 1
    END
ELSE
    IF  ln_pos - 1 + sizeof (msg_etype) <= sizeof (ln)
    THEN
        BEGIN
        s10mv (sizeof (msg_etype), sizeof (ln), @msg_etype, 1,
              @ln, ln_pos, sizeof (msg_etype));
        ln_pos := ln_pos + sizeof (msg_etype) + 1
        END;
    (*ENDIF*) 
(*ENDIF*) 
IF  NOT skip_all
THEN
    BEGIN
    IF  ln_pos - 1 + sizeof (msg_epos) <= sizeof (ln)
    THEN
        s10mv (sizeof (msg_epos), sizeof (ln), @msg_epos, 1,
              @ln, ln_pos, sizeof (msg_epos));
    (*ENDIF*) 
    ln_pos      := ln_pos + 9;
    ln [ln_pos] := ':';
    ln_pos      := ln_pos + 1;
    g17int4to_line (st.epos, NOT c_with_zero, 6, ln_pos, ln);
    ln_pos := ln_pos + 7
    END;
(*ENDIF*) 
IF  NOT skip_all AND NOT skip_elen
THEN
    BEGIN
    IF  ln_pos - 1 + sizeof (msg_elen) <= sizeof (ln)
    THEN
        s10mv (sizeof (msg_elen), sizeof (ln), @msg_elen, 1,
              @ln, ln_pos, sizeof (msg_elen));
    (*ENDIF*) 
    ln_pos      := ln_pos + 9;
    ln [ln_pos] := ':';
    ln_pos      := ln_pos + 1;
    g17int4to_line (st.elen_var, NOT c_with_zero, 6, ln_pos+1, ln);
    ln_pos := ln_pos + 8
    END;
(*ENDIF*) 
IF  NOT skip_all AND is_ecol_pos
THEN
    BEGIN
    g17int4to_line (st.ecol_pos, NOT c_with_zero, 6, ln_pos+1, ln);
    ln_pos := ln_pos + 8
    END;
(*ENDIF*) 
IF  NOT skip_all AND NOT skip_ecol AND NOT is_ecol_pos
THEN
    BEGIN
    g17int4to_line (ord (st.ecol_tab [1]),
          NOT c_with_zero, 3, ln_pos, ln);
    ln_pos := ln_pos + 4;
    g17int4to_line (ord (st.ecol_tab [2]),
          NOT c_with_zero, 3, ln_pos, ln);
    ln_pos := ln_pos + 4
    END;
(*ENDIF*) 
IF  st.etype = st_value
THEN
    BEGIN
    CASE st.ecol_tab [1] OF
        chr(0) :
            BEGIN
            IF  st.ecol_tab[ 2 ] <> chr( 0 )
            THEN
                msg_elen := 'expr cnt '
            ELSE
                msg_elen := 'data_part';
            (*ENDIF*) 
            END;
        cgg04_param_in_between_expr :
            msg_elen := 'param bet';
        cgg04_param_in_in_expr :
            msg_elen := 'param in ';
        OTHERWISE
            msg_elen := 'not allow';
        END;
    (*ENDCASE*) 
    IF  ln_pos - 1 + sizeof (msg_elen) <= sizeof (ln)
    THEN
        s10mv (sizeof (msg_elen), sizeof (ln),
              @msg_elen, 1, @ln, ln_pos, sizeof (msg_elen))
    (*ENDIF*) 
    END;
(*ENDIF*) 
IF  NOT (st.etype in [st_dummy, st_build_in_func, st_func, st_op,
    st_output, st_output_join, st_output_build_rec])
    AND NOT (st.eop = op_none)
THEN
    BEGIN
    g17st1op (st.eop, len, msg_etype);
    IF  (len         <= sizeof (msg_etype)) AND
        (6 - 1 + len <= sizeof (second_ln))
    THEN
        s10mv (sizeof (msg_etype), sizeof (second_ln),
              @msg_etype, 1, @second_ln, 6, len);
    (*ENDIF*) 
    is_second_ln := true
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17packet_head (
            nam             : tsp00_Sname;
            VAR packet_head : tsp1_packet_header;
            VAR ln_len      : integer;
            VAR ln          : tsp00_Line);
 
VAR
      i : integer;
 
BEGIN
SAPDB_PascalForcedFill (sizeof (ln), @ln, 1, sizeof (ln), ' ');
ln_len := 0;
g17sname_to_line (nam, ln_len, ln);
ln [ln_len+1] := ':';
ln_len        := ln_len + 2;
WITH packet_head DO
    BEGIN
    CASE  sp1h_mess_code OF
        csp_ascii:
            g17sname_to_line ('ascii       ', ln_len, ln);
        csp_ebcdic:
            g17sname_to_line ('ebcdic      ', ln_len, ln);
        csp_unicode:
            g17sname_to_line ('unicode     ', ln_len, ln);
        csp_unicode_swap:
            g17sname_to_line ('unicode_swap', ln_len, ln);
        OTHERWISE
            BEGIN
            g17sname_to_line ('mess_code=  ', ln_len, ln);
            g17int4to_line (ord (sp1h_mess_code), NOT c_with_zero, 3,
                  ln_len, ln);
            ln_len := ln_len + 4
            END
        END;
    (*ENDCASE*) 
    IF  sp1h_mess_swap = sw_normal
    THEN
        g17nameto_line (', normal_swap     ', ln_len, ln)
    ELSE
        IF  sp1h_mess_swap = sw_full_swapped
        THEN
            g17sname_to_line (', full_swap ', ln_len, ln)
        ELSE
            IF  sp1h_mess_swap = sw_part_swapped
            THEN
                g17sname_to_line (', part_swap ', ln_len, ln)
            ELSE
                BEGIN
                g17sname_to_line (', mess_swap=', ln_len, ln);
                g17hexto_line (chr (ord (sp1h_mess_swap)), ln_len, ln)
                END;
            (*ENDIF*) 
        (*ENDIF*) 
    (*ENDIF*) 
    gg17delimiter_to_line (ln_len, ln);
    FOR i := 1 TO sizeof (sp1h_appl_version) DO
        ln [ln_len+i] := sp1h_appl_version [i];
    (*ENDFOR*) 
    ln_len      := ln_len + sizeof (sp1h_appl_version) + 1;
    ln [ln_len] := '-';
    FOR i := 1 TO sizeof (sp1h_application) DO
        ln [ln_len+i] := sp1h_application [i];
    (*ENDFOR*) 
    ln_len := ln_len + sizeof (sp1h_appl_version);
    g17sname_to_line ('   (        ', ln_len, ln);
    g17trimint4_to_line (sp1h_no_of_segm, ln_len, ln);
    IF  sp1h_no_of_segm = 1
    THEN
        g17nameto_line (' segment, len:    ', ln_len, ln)
    ELSE
        g17nameto_line (' segments, len:   ', ln_len, ln);
    (*ENDIF*) 
    ln_len := ln_len + 1;
    g17trimint4_to_line (sp1h_varpart_len, ln_len, ln);
    ln_len      := ln_len + 1;
    ln [ln_len] := ')'
    END
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17page_ref_to_line (
            VAR page_ref : tgg91_PageRef;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
IF  gg06IsNilRef (page_ref)
THEN
    g17sname_to_line ('nil         ', ln_len, ln)
ELSE
    IF  gg06IsDummyRef (page_ref)
    THEN
        g17sname_to_line ('dummy       ', ln_len, ln)
    ELSE
        BEGIN
        g17trimint4_to_line (gg06RefPno (page_ref), ln_len, ln);
        ln_len      := ln_len+ 1;
        ln [ln_len] := '.';
        g17trimint4_to_line (gg06RefPos (page_ref), ln_len, ln)
        END
    (*ENDIF*) 
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17pagecheck_to_line (
            pagecheck  : tgg00_PageCheckType;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      n            : tsp00_Name;
 
BEGIN
print_number := false;
CASE pagecheck OF
    chckNil_egg00:
        n := 'chckNil           ';
    chckWriteCnt_egg00:
        n := 'chckWriteCnt      ';
    chckChecksumData_egg00:
        n := 'ChecksumData      ';
    chckBottomLog_egg00:
        n := 'chckBottomLog     ';
    chckChecksumLog_egg00:
        n := 'ChecksumLog       ';
    chckChecksumLogInfo_egg00:
        n := 'ChecksumLogInfo   ';
    OTHERWISE
        BEGIN
        n := 'CHECKTYPE=        ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (n, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (pagecheck), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17pagemode_to_line (
            pagemode     : tgg00_PageMode;
            is_edit_mode : boolean;
            VAR ln_len   : integer;
            VAR ln       : tsp00_Line);
 
VAR
      old_ln_len : integer;
 
BEGIN
IF  (pagemode = [ ]) AND NOT is_edit_mode
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    old_ln_len := ln_len;
    IF  pmTemp_egg00 in pagemode
    THEN
        g17sname_to_line (' temp       ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17sname_to_line (' -          ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  pmCatalog_egg00 in pagemode
    THEN
        g17sname_to_line (' catalog    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17sname_to_line (' -          ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  pmFdir_egg00 in pagemode
    THEN
        g17sname_to_line (' fdir       ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17sname_to_line (' -          ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    IF  pmArchive_egg00 in pagemode
    THEN
        g17sname_to_line (' archive    ', ln_len, ln)
    ELSE
        IF  is_edit_mode
        THEN
            g17sname_to_line (' -          ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17pagetype_to_line (
            pagetype   : tgg00_PageType;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      n            : tsp00_Sname;
 
BEGIN
print_number := false;
CASE pagetype OF
    ptNil_egg00:
        n := 'nil         ';
    ptData_egg00:
        n := 'data        ';
    ptDump_egg00:
        n := 'dump        ';
    ptFbm_egg00:
        n := 'fbm         ';
    ptLog_egg00:
        n := 'log         ';
    ptSave_egg00:
        n := 'save        ';
    ptSys_egg00:
        n := 'sys         ';
    ptVtrace_egg00:
        n := 'vtrace      ';
    ptConverter_egg00:
        n := 'converter   ';
    ptConverterBitMap_egg00:
        n := 'conv bit map';
    ptLogInfo_egg00:
        n := 'LogInfoPage ';
    ptIOManInfo_egg00:
        n := 'IOManInfoPag';
    OTHERWISE
        BEGIN
        n := 'PTYPE=      ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (n, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(pagetype), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17pagetype2_to_line (
            pagetype2  : tgg00_PageType2;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      n            : tsp00_Sname;
 
BEGIN
print_number := false;
CASE pagetype2 OF
    pt2Nil_egg00:
        n := 'nil         ';
    pt2BitMap_egg00:
        n := 'bitmap      ';
    pt2Checkpt_egg00:
        n := 'checkpt     ';
    pt2Config_egg00:
        n := 'config      ';
    pt2Converter_egg00:
        n := 'converter   ';
    pt2EndSaveInfo_egg00:
        n := 'end_of_save ';
    pt2EndVolumeInfo_egg00:
        n := 'end_of_vol  ';
    pt2Inv_egg00:
        n := 'inv         ';
    pt2InvSubtree_egg00:
        n := 'inv_subtree ';
    pt2Log_egg00:
        n := 'log         ';
    pt2LogCleared_egg00:
        n := 'log_cleared ';
    pt2LogInfo_egg00:
        n := 'log_info    ';
    pt2String_egg00:
        n := 'string      ';
    pt2Tab_egg00:
        n := 'tab         ';
    pt2Usm_egg00:
        n := 'usm         ';
    pt2VolumeFirstInfo_egg00:
        n := 'first_info  ';
    pt2Xparam_egg00:
        n := 'xparam      ';
    pt2Object_egg00:
        n := 'object      ';
    pt2Hash_egg00:
        n := 'hash        ';
    pt2VarObject_egg00:
        n := 'var_object  ';
    pt2ContObject_egg00:
        n := 'cont_object ';
    pt2UndoLog_egg00:
        n := 'UndoLog     ';
    pt2RedoLog_egg00:
        n := 'RedoLog     ';
    pt2History_egg00:
        n := 'History     ';
    pt2HistoryDirectory_egg00:
        n := 'HistoryDir  ';
    pt2OpenTrans_egg00:
        n := 'OpenTrans   ';
    OTHERWISE
        BEGIN
        n := 'PTYPE2=     ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (n, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(pagetype2), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17paraminfo_to_line (
            VAR pi     : tsp1_param_info;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      type_pos : integer;
 
BEGIN
g17sname_to_line ('pos:        ', ln_len, ln);
g17int4to_line (pi.sp1i_bufpos,
      NOT c_with_zero, 5, ln_len+1, ln);
ln_len := ln_len + 7;
g17sname_to_line ('io_len:     ', ln_len, ln);
g17int4to_line (pi.sp1i_in_out_len,
      NOT c_with_zero, 4, ln_len+1, ln);
ln_len := ln_len + 5;
gg17iotype_to_line (pi.sp1i_io_type, ln_len, ln);
ln_len   := succ (ln_len);
type_pos := ln_len;
g17paramspec_to_line (pi.sp1i_data_type, pi.sp1i_length,
      pi.sp1i_frac, ln_len, ln);
IF  ln_len < type_pos+16
THEN
    ln_len := type_pos+16
ELSE
    ln_len := ln_len + 2;
(*ENDIF*) 
gg17optset_to_line (pi.sp1i_mode, ln_len, ln)
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17paramspec_to_line (
            data_type  : tsp00_DataType;
            length     : tsp00_Int2;
            frac       : tsp00_Uint1;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
gg17datatype_to_line (data_type, ln_len, ln);
ln_len       := succ (ln_len);
ln[ ln_len ] := '(';
g17trimint4_to_line (length, ln_len, ln);
IF  frac <> 0
THEN
    BEGIN
    ln_len       := succ (ln_len);
    ln[ ln_len ] := ',';
    g17trimint4_to_line (frac, ln_len, ln);
    END;
(*ENDIF*) 
ln_len       := succ (ln_len);
ln[ ln_len ] := ')'
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17parsidinfo_to_line (
            info       : char;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE ord (info) OF
    csp1_p_none:
        msg := 'none              ';
    csp1_p_command_executed:
        msg := 'command_executed  ';
    csp1_p_use_adbs:
        msg := 'use_adbs          ';
    csp1_p_release_found:
        msg := 'release_found     ';
    (* PTS 1111575 E.Z. *)
    csp1_p_not_allowed_for_program:
        msg := 'not_allowed_for_pr';
    csp1_p_close_found:
        msg := 'close_found       ';
    csp1_p_describe_found:
        msg := 'describe_found    ';
    csp1_p_fetch_found:
        msg := 'fetch_found       ';
    csp1_p_mfetch_found:
        msg := 'mfetch_found      ';
    csp1_p_mass_select_found:
        msg := 'mass_select_found ';
    csp1_p_select_for_update_found:
        msg := 'select_for_upd_fnd';
    csp1_p_reuse_mass_select_found:
        msg := 'reuse_mass_select ';
    csp1_p_reuse_update_sel_found:
        msg := 'reuse_upd_select  ';
    csp1_p_dialog_call:
        msg := 'dialog_call       ';
    csp1_p_mass_command:
        msg := 'mass_command      ';
    csp1_p_mselect_found:
        msg := 'mselect_found     ';
    csp1_p_for_upd_mselect_found:
        msg := 'for_updmselect_fnd';
    csp1_p_reuse_mselect_found:
        msg := 'reuse_mselect_fnd ';
    csp1_p_reuse_upd_mselect_found:
        msg := 'reuse_upd_mselect ';
    OTHERWISE
        BEGIN
        msg          := 'P_INFO=           ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (info), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17parthead (
            VAR part_head : tsp1_part_header;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
CONST
      mx_indent = 3;
 
BEGIN
SAPDB_PascalForcedFill (sizeof (ln), @ln, 1, sizeof (ln), ' ');
ln_len := mx_indent;
WITH part_head DO
    BEGIN
    g17sp1partkind_to_line (sp1p_part_kind, ln_len, ln);
    (* h.b. CR 1000072 *)
    IF  sp1pa_last_packet in sp1p_attributes
    THEN
        IF  sp1pa_first_packet in sp1p_attributes
        THEN
            g17sname_to_line (' FIRST/LAST ', ln_len, ln)
        ELSE
            g17sname_to_line (' LAST       ', ln_len, ln)
        (*ENDIF*) 
    ELSE
        IF  sp1pa_first_packet in sp1p_attributes
        THEN
            g17sname_to_line (' FIRST      ', ln_len, ln);
        (*ENDIF*) 
    (*ENDIF*) 
    g17sname_to_line (' PART   (   ', ln_len, ln);
    g17trimint4_to_line (sp1p_arg_count, ln_len, ln);
    IF  sp1p_arg_count = 1
    THEN
        g17sname_to_line (' argument   ', ln_len, ln)
    ELSE
        g17sname_to_line (' arguments  ', ln_len, ln);
    (*ENDIF*) 
    IF  sp1p_buf_len <= 0
    THEN
        BEGIN
        g17sname_to_line (', len:      ', ln_len, ln);
        ln_len := ln_len + 1;
        g17trimint4_to_line (sp1p_buf_len, ln_len, ln)
        END;
    (*ENDIF*) 
    g17sname_to_line (', size:     ', ln_len, ln);
    ln_len := ln_len + 1;
    g17trimint4_to_line (sp1p_buf_size, ln_len, ln);
    IF  sp1p_segm_offset <> 0
    THEN
        BEGIN
        g17nameto_line (', segm_offset:    ', ln_len, ln);
        ln_len := ln_len + 1;
        g17trimint4_to_line (sp1p_segm_offset, ln_len, ln)
        END;
    (*ENDIF*) 
    ln_len      := ln_len + 1;
    ln [ln_len] := ')'
    END
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
FUNCTION
      g17printable_char (c : char) : boolean;
 
CONST
      c_tilde = 126; (* '~' *)
 
BEGIN
IF  csp_ascii_blank = ' '
THEN
    g17printable_char := (c >= csp_ascii_blank) AND (c <= chr (c_tilde))
ELSE
    g17printable_char := c in [
          'A'..'I', 'J'..'R', 'S'..'Z',
          'a'..'i', 'j'..'r', 's'..'z',
          '0'..'9', ' ', '.', '<', '(', '+',
          '|', '&', '!', '$', '*', ')', ';',
          '-', '/', ',', '%', '_', '>', '?',
          ':', '#', '@', '''','=', '"' ]
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17returnsegm_head (
            VAR retsegm_head : tsp1_segment_header;
            VAR ln1_len      : integer;
            VAR ln1          : tsp00_Line;
            VAR ln2_len      : integer;
            VAR ln2          : tsp00_Line);
 
CONST
      mx_indent = 3;
 
VAR
      i  : integer;
      ok : boolean;
 
BEGIN
SAPDB_PascalForcedFill (sizeof (ln1), @ln1, 1, sizeof (ln1), ' ');
ln2     := ln1;
ln1_len := mx_indent;
ln2_len := mx_packet_indent;
WITH retsegm_head DO
    BEGIN
    IF  sp1r_returncode = 0
    THEN
        g17sname_to_line ('ok          ', ln1_len, ln1)
    ELSE
        BEGIN
        g17sname_to_line ('***         ', ln1_len, ln1);
        ln1_len := ln1_len + 1;
        g17trimint4_to_line (sp1r_returncode, ln1_len, ln1)
        END;
    (*ENDIF*) 
    g17nameto_line (' / RETURN SEGMENT ', ln1_len, ln1);
    ln1_len := ln1_len + 1;
    g17trimint4_to_line (sp1s_own_index, ln1_len, ln1);
    g17sname_to_line ('   (        ', ln1_len, ln1);
    g17trimint4_to_line (sp1s_no_of_parts, ln1_len, ln1);
    IF  sp1s_no_of_parts = 1
    THEN
        g17sname_to_line (' part, len: ', ln1_len, ln1)
    ELSE
        g17sname_to_line (' parts, len:', ln1_len, ln1);
    (*ENDIF*) 
    ln1_len := ln1_len + 1;
    g17trimint4_to_line (sp1s_segm_len, ln1_len, ln1);
    IF  sp1s_segm_offset <> 0
    THEN
        BEGIN
        g17nameto_line (', segm_offset:    ', ln1_len, ln1);
        ln1_len := ln1_len + 1;
        g17trimint4_to_line (sp1s_segm_offset, ln1_len, ln1)
        END;
    (*ENDIF*) 
    ln1_len       := ln1_len + 1;
    ln1 [ln1_len] := ')';
    (*------- second line -------*)
    IF  sp1r_function_code <> csp1_nil_fc
    THEN
        g17sp1function_to_line (sp1r_function_code, ln2_len, ln2);
    (*ENDIF*) 
    IF  sp1r_returncode <> 0
    THEN
        BEGIN
        IF  ln2_len > mx_packet_indent
        THEN
            gg17delimiter_to_line (ln2_len, ln2);
        (*ENDIF*) 
        g17sname_to_line ('errpos:     ', ln2_len, ln2);
        ln2_len := ln2_len + 1;
        g17trimint4_to_line (sp1r_errorpos, ln2_len, ln2)
        END;
    (*ENDIF*) 
    IF  ln2_len > mx_packet_indent
    THEN
        gg17delimiter_to_line (ln2_len, ln2);
    (*ENDIF*) 
    i  := 1;
    ok := true;
    WHILE (i <= sizeof (sp1r_sqlstate)) AND ok DO
        IF  ((sp1r_sqlstate [i] >= '0' ) AND
            ( sp1r_sqlstate [i] <= '9'))
            OR
            ((i = 1) AND ((sp1r_sqlstate [1] = 'S' ) OR
            (              sp1r_sqlstate [1] = 'I'))   )
        THEN
            i := i + 1
        ELSE
            ok := false;
        (*ENDIF*) 
    (*ENDWHILE*) 
    IF  NOT ok
    THEN
        g17nameto_line ('*** sqlstate: ''   ', ln2_len, ln2)
    ELSE
        g17sname_to_line ('sqlstate: '' ', ln2_len, ln2);
    (*ENDIF*) 
    FOR i := 1 TO sizeof (sp1r_sqlstate) DO
        ln2 [ln2_len+i] := sp1r_sqlstate [i];
    (*ENDFOR*) 
    ln2_len       := ln2_len + sizeof (sp1r_sqlstate) + 1;
    ln2 [ln2_len] := '''';
    IF  sp1r_tracelevel > 0
    THEN
        BEGIN
        IF  ln2_len > mx_packet_indent
        THEN
            gg17delimiter_to_line (ln2_len, ln2);
        (*ENDIF*) 
        g17sname_to_line ('trace:      ', ln2_len, ln2);
        ln2_len := ln2_len + 1;
        g17trimint4_to_line (sp1r_tracelevel, ln2_len, ln2)
        END;
    (*ENDIF*) 
    IF  ln2_len = mx_packet_indent
    THEN
        ln2_len := 0
    (*ENDIF*) 
    END
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      gg17SessionTransToLine (
            VAR session      : tgg91_SessionNo;
            VAR transid      : tgg91_TransNo;
            VAR writetransid : tgg91_TransNo;
            VAR subtrans     : tgg00_SubtransNo;
            VAR ln_len       : integer;
            VAR ln           : tsp00_Line);
 
BEGIN
gg06SessionToLine (session, ln_len, ln);
ln_len      := ln_len + 1;
ln [ln_len] := '.';
gg06TransToLine (transid, ln_len, ln);
ln_len      := ln_len + 1;
ln [ln_len] := '.';
gg06TransToLine (writetransid, ln_len, ln);
IF  subtrans <> cgg_zero_subtrans
THEN
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := '/';
    g17trimint4_to_line (subtrans, ln_len, ln)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17siteto_line (
            site           : tgg00_ServerdbNo;
            VAR ln_len     : integer;
            VAR ln         : tsp00_Line);
 
BEGIN
IF  site = cgg04_nil_site
THEN
    g17sname_to_line ('nil         ', ln_len, ln)
ELSE
    IF  site = cgg04_dummy_site
    THEN
        g17sname_to_line ('dummy       ', ln_len, ln)
    ELSE
        g17c2int_to_line (site, ln_len, ln)
    (*ENDIF*) 
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sname_to_line (
            n             : tsp00_Sname;
            VAR ln_len    : integer;
            VAR ln        : tsp00_Line);
 
VAR
      len : integer;
 
BEGIN
IF  n <> bsp_sname
THEN
    BEGIN
    len := sizeof (n);
    WHILE n [len] = ' ' DO
        len := len - 1;
    (*ENDWHILE*) 
    IF  ln_len + len <= sizeof (ln)
    THEN
        BEGIN
        s10mv (sizeof (n), sizeof (ln), @n, 1, @ln, ln_len + 1, len);
        ln_len := ln_len + len
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sp1cmdmess_to_line (
            cmd_mess   : tsp1_cmd_mess_type;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE cmd_mess OF
    sp1m_nil:
        msg := 'sp1m_nil    ';
    sp1m_cmd_lower_bound:
        msg := 'cmd_lwb     ';
    sp1m_dbs:
        msg := 'dbs         ';
    sp1m_get_challenge :
        msg := 'getchallenge';
    sp1m_parse:
        msg := 'parse       ';
    (* PTS 1111575 E.Z. *)
    sp1m_syntax:
        msg := 'syntax      ';
    sp1m_cmd_upper_bound:
        msg := 'cmd_upb     ';
    sp1m_no_cmd_lower_bound:
        msg := 'no_cmd_lwb  ';
    sp1m_execute:
        msg := 'execute     ';
    (* PTS 1111575 E.Z. *)
    sp1m_putval:
        msg := 'putval      ';
    sp1m_getval:
        msg := 'getval      ';
    sp1m_load:
        msg := 'load        ';
    sp1m_unload:
        msg := 'unload      ';
    sp1m_no_cmd_upper_bound:
        msg := 'no_cmd_upb  ';
    sp1m_hello:
        msg := 'hello       ';
    sp1m_util_lower_bound:
        msg := 'util_lwb    ';
    sp1m_utility:
        msg := 'utility     ';
    sp1m_incopy:
        msg := 'incopy      ';
    sp1m_outcopy:
        msg := 'outcopy     ';
    sp1m_diag_outcopy:
        msg := 'diag_outcopy';
    sp1m_util_upper_bound:
        msg := 'util_upb    ';
    sp1m_specials_lower_bound:
        msg := 'specials_lwb';
    sp1m_switch:
        msg := 'switch      ';
    sp1m_switchlimit:
        msg := 'switchlimit ';
    sp1m_buflength:
        msg := 'buflength   ';
    sp1m_minbuf:
        msg := 'minbuf      ';
    sp1m_maxbuf:
        msg := 'maxbuf      ';
    sp1m_state_utility:
        msg := 'state_util  ';
    sp1m_specials_upper_bound:
        msg := 'specials_upb';
    sp1m_wait_for_event:
        msg := 'event_wait  ';
    OTHERWISE
        BEGIN
        msg := 'CMD_MESS=   ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (cmd_mess), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sp1function_to_line (
            function_code : tsp00_Int2;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE function_code OF
    csp1_nil_fc:
        msg := 'nil_fc            ';
    csp1_create_table_fc:
        msg := 'create_table_fc   ';
    csp1_insert_fc:
        msg := 'insert_fc         ';
    csp1_select_fc:
        msg := 'select_fc         ';
    csp1_update_fc:
        msg := 'update_fc         ';
    csp1_drop_view_fc:
        msg := 'drop_view_fc      ';
    csp1_drop_table_fc:
        msg := 'drop_table_fc     ';
    csp1_delete_fc:
        msg := 'delete_fc         ';
    csp1_create_view_fc:
        msg := 'create_view_fc    ';
    csp1_drop_user_fc:
        msg := 'drop_user_fc      ';
    csp1_create_sequence_fc:
        msg := 'create_sequence_fc';
    csp1_drop_sequence_fc:
        msg := 'drop_sequence_fc  ';
    csp1_create_schema_fc:
        msg := 'create_schema_fc  ';
    csp1_create_user_fc:
        msg := 'create_user_fc    ';
    csp1_create_index_fc:
        msg := 'create_index_fc   ';
    csp1_drop_index_fc:
        msg := 'drop_index_fc     ';
    csp1_create_procedure_fc:
        msg := 'create_procedurefc';
    csp1_alter_procedure_fc:
        msg := 'alter_procedure_fc';
    csp1_alter_table_fc:
        msg := 'alter_table_fc    ';
    csp1_explain_fc:
        msg := 'explain_fc        ';
    csp1_grant_fc:
        msg := 'grant_fc          ';
    csp1_revoke_fc:
        msg := 'revoke_fc         ';
    csp1_create_synonym_fc:
        msg := 'create_synonym_fc ';
    csp1_drop_synonym_fc:
        msg := 'drop_synonym_fc   ';
    csp1_pl_sql_execute_fc:
        msg := 'pl_sql_execute_fc ';
    csp1_lock_table_fc:
        msg := 'lock_table_fc     ';
    csp1_rename_fc:
        msg := 'rename_fc         ';
    csp1_comment_fc:
        msg := 'comment_fc        ';
    csp1_audit_fc:
        msg := 'audit_fc          ';
    csp1_alter_session_fc:
        msg := 'alter_session_fc  ';
    csp1_alter_user_fc:
        msg := 'alter_user_fc     ';
    csp1_commit_fc:
        msg := 'commit_fc         ';
    csp1_rollback_fc:
        msg := 'rollback_fc       ';
    csp1_savepoint_fc:
        msg := 'savepoint_fc      ';
    csp1_create_trigger_fc:
        msg := 'create_trigger_fc ';
    csp1_alter_trigger_fc:
        msg := 'alter_trigger_fc  ';
    csp1_drop_trigger_fc:
        msg := 'drop_trigger_fc   ';
    csp1_analyze_table_fc:
        msg := 'analyze_table_fc  ';
    csp1_drop_procedure_fc:
        msg := 'drop_procedure_fc ';
    csp1_create_sl_snapshot_log_fc:
        msg := 'cr_snapshot_log_fc';
    csp1_drop_sl_snapshot_log_fc:
        msg := 'dr_snapshot_log_fc';
    csp1_create_snapshot_fc:
        msg := 'create_snapshot_fc';
    csp1_select_direct_fc:
        msg := 'select_direct_fc  ';
    csp1_select_first_fc:
        msg := 'select_first_fc   ';
    csp1_select_last_fc:
        msg := 'select_last_fc    ';
    csp1_select_next_fc:
        msg := 'select_next_fc    ';
    csp1_select_prev_fc:
        msg := 'select_prev_fc    ';
    csp1_fetch_first_fc:
        msg := 'fetch_first_fc    ';
    csp1_fetch_last_fc:
        msg := 'fetch_last_fc     ';
    csp1_fetch_next_fc:
        msg := 'fetch_next_fc     ';
    csp1_fetch_prev_fc:
        msg := 'fetch_prev_fc     ';
    csp1_fetch_pos_fc:
        msg := 'fetch_pos_fc      ';
    csp1_fetch_same_fc:
        msg := 'fetch_same_fc     ';
    csp1_string_command_fc:
        msg := 'string_command_fc ';
    csp1_connect_fc:
        msg := 'connect_fc        ';
    csp1_drop_parseid_fc:
        msg := 'drop_parseid_fc   ';
    csp1_close_fc:
        msg := 'close_fc          ';
    csp1_usage_fc:
        msg := 'usage_fc          ';
    csp1_serverdb_fc:
        msg := 'serverdb_fc       ';
    csp1_monitor_fc:
        msg := 'monitor_fc        ';
    csp1_set_fc:
        msg := 'set_fc            ';
    csp1_link_fc:
        msg := 'link_fc           ';
    csp1_create_domain_fc:
        msg := 'create_domain_fc  ';
    csp1_drop_domain_fc:
        msg := 'drop_domain_fc    ';
    csp1_describe_fc:
        msg := 'describe_fc       ';
    csp1_alter_password_fc:
        msg := 'alter_password_fc ';
    csp1_putval_fc:
        msg := 'putval_fc         ';
    csp1_getval_fc:
        msg := 'getval_fc         ';
    csp1_diagnose_fc:
        msg := 'diagnose_fc       ';
    csp1_unlock_fc:
        msg := 'unlock_fc         ';
    csp1_refresh_fc:
        msg := 'refresh_fc        ';
    csp1_clear_snapshot_log_fc:
        msg := 'clear_snapshot_log';
    csp1_next_stamp_fc:
        msg := 'next_stamp_fc     ';
    csp1_exists_table_fc:
        msg := 'exists_table      ';
    csp1_commit_release_fc:
        msg := 'commit_release    ';
    csp1_rollback_release_fc:
        msg := 'rollback_release  ';
    csp1_drda_native_ddl_fc:
        msg := 'drda_native_ddl   ';
    csp1_select_into_fc:
        msg := 'select_into       ';
    csp1_fetch_relative_fc:
        msg := 'fetch_relative    ';
    csp1_cursor_pl_sql_execute_fc:
        msg := 'cursor_pl_sql     ';
    csp1_administrator_fc:
        msg := 'administrator_fc  ';
    csp1_minsert_fc:
        msg := 'minsert_fc        ';
    csp1_mselect_fc:
        msg := 'mselect_fc        ';
    csp1_mupdate_fc:
        msg := 'mupdate_fc        ';
    csp1_mdelete_fc:
        msg := 'mdelete_fc        ';
    csp1_mlock_objects_fc:
        msg := 'mlock_objects_fc  ';
    csp1_mfetch_first_fc:
        msg := 'mfetch_first_fc   ';
    csp1_mfetch_last_fc:
        msg := 'mfetch_last_fc    ';
    csp1_mfetch_next_fc:
        msg := 'mfetch_next_fc    ';
    csp1_mfetch_prev_fc:
        msg := 'mfetch_prev_fc    ';
    csp1_mfetch_pos_fc:
        msg := 'mfetch_pos_fc     ';
    csp1_mfetch_same_fc:
        msg := 'mfetch_same_fc    ';
    csp1_mselect_into_fc:
        msg := 'mselect_into      ';
    csp1_mfetch_relative_fc:
        msg := 'mfetch_relative_fc';
    OTHERWISE
        BEGIN
        msg := 'FUNCTION_CODE=    ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (function_code, ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sp1partkind_to_line (
            part_kind  : tsp1_part_kind;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE part_kind OF
    sp1pk_nil:
        msg := 'sp1pk_nil         ';
    sp1pk_appl_parameter_description:
        msg := 'appl_param_desc   ';
    sp1pk_bdinfo :
        msg := 'bdinfo            ';
    sp1pk_columnnames:
        msg := 'columnnames       ';
    sp1pk_command:
        msg := 'command           ';
    sp1pk_conv_tables_returned:
        msg := 'conv_tables_return';
    sp1pk_data:
        msg := 'data              ';
    sp1pk_errortext:
        msg := 'errortext         ';
    (* PTS 1111575 E.Z. *)
    sp1pk_longdata:
        msg := 'longdata          ';
    sp1pk_modulname:
        msg := 'modulname         ';
    sp1pk_page:
        msg := 'page              ';
    sp1pk_parsid:
        msg := 'parsid            ';
    sp1pk_parsid_of_select:
        msg := 'parsid_of_select  ';
    sp1pk_resultcount:
        msg := 'resultcount       ';
    sp1pk_resulttablename:
        msg := 'resulttablename   ';
    sp1pk_shortinfo:
        msg := 'shortinfo         ';
    sp1pk_user_info_returned:
        msg := 'user_info_returned';
    sp1pk_surrogate:
        msg := 'surrogate         ';
    sp1pk_tablename:
        msg := 'tablename         ';
    sp1pk_session_info_returned:
        msg := 'sessioninfo_return';
    sp1pk_output_cols_no_parameter:
        msg := 'prepare outputcols';
    (* PTS 1107687 E.Z. *)
    sp1pk_key :
        msg := 'key               ';
    sp1pk_serial :
        msg := 'serial            ';
    sp1pk_relative_pos :
        msg := 'relative_pos      ';
    sp1pk_abap_istream :
        msg := 'abap input stream ';
    sp1pk_abap_ostream :
        msg := 'abap output stream';
    sp1pk_abap_info :
        msg := 'sp1pk_abap_info   ';
    (* PTS 1107687 E.Z. *)
    sp1pk_checkpoint_info :
        msg := 'checkpoint_info   ';
    sp1pk_long_demand :
        msg := 'long_demand       ';
    sp1pk_message_list :
        msg := 'message_list      ';
    OTHERWISE
        BEGIN
        msg := 'PART_KIND=        ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (part_kind), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sp1producer_to_line (
            producer   : tsp1_producer;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
CASE producer OF
    sp1pr_user_cmd:
        g17sname_to_line ('user_cmd    ', ln_len, ln);
    sp1pr_internal_cmd:
        g17sname_to_line ('internal_cmd', ln_len, ln);
    sp1pr_kernel:
        g17sname_to_line ('kernel      ', ln_len, ln);
    sp1pr_installation:
        g17sname_to_line ('installation', ln_len, ln);
    OTHERWISE
        BEGIN
        g17sname_to_line ('PRODUCER=   ', ln_len, ln);
        g17trimint4_to_line (ord (producer), ln_len, ln)
        END
    END
(*ENDCASE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17sp1sqlmode_to_line (
            sqlmode    : tsp1_sqlmode;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE sqlmode OF
    sp1sm_nil:
        msg := 'sp1sm_nil         ';
    sp1sm_session_sqlmode:
        msg := 'session_sqlmode   ';
    sp1sm_internal:
        msg := 'internal          ';
    sp1sm_ansi:
        msg := 'ansi              ';
    sp1sm_db2:
        msg := 'db2               ';
    sp1sm_oracle:
        msg := 'oracle            ';
    OTHERWISE
        BEGIN
        msg := 'SQLMODE=          ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (sqlmode), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17st1op (
            op      : tgg00_StackOpType;
            VAR len : integer;
            VAR msg : tsp00_Sname);
 
VAR
      ln : tsp00_Line;
 
BEGIN
CASE op OF
    op_none:
        msg := 'NONE        ';
    op_abs:
        msg := 'ABS         ';
    op_adddate:
        msg := 'ADD DATE    ';
    op_addtime:
        msg := 'ADD TIME    ';
    op_mapchar:
        msg := 'MAPCHAR     ';
    op_and:
        msg := 'AND         ';
    op_ascii:
        msg := 'ASCII       ';
    op_between:
        msg := 'BETWEEN     ';
    op_ceil:
        msg := 'CEIL        ';
    op_date:
        msg := 'DATE        ';
    op_date_from_timestamp:
        msg := 'DATE FROM TS';
    op_datediff:
        msg := 'DATE DIFF   ';
    op_dayofweek:
        msg := 'DAY OF WEEK ';
    op_dayofyear:
        msg := 'DAY OF YEAR ';
    op_days:
        msg := 'DAYS        ';
    op_dbyte_length :
        msg := 'DBYTE LENGTH';
    op_dbyte_upper :
        msg := 'DBYTE UPPER ';
    op_dbyte_lower :
        msg := 'DBYTE LOWER ';
    op_dbyte_initcap :
        msg := 'DBYTE INITCA';
    op_dbyte_mapchar :
        msg := 'DBYTE MAPCHR';
    op_dbyte_replace :
        msg := 'DBYTE REPL  ';
    op_dbyte_remove :
        msg := 'DBYTE REMOVE';
    op_dbyte_translate :
        msg := 'DBYTE TRANSL';
    op_desc_expr_upd:
        msg := 'DSC EXPR UPD';
    op_desc_unique_expr_upd:
        msg := 'DSC UNQ EXPR';
    op_digits:
        msg := 'DIGITS      ';
    op_div:
        msg := '/           ';
    op_ebcdic:
        msg := 'EBCDIC      ';
    op_eq:
        msg := '=           ';
    op_eq_all:
        msg := 'EQ ALL      ';
    op_expr_upd:
        msg := 'EXPR UPD    ';
    op_fixed:
        msg := 'FIXED       ';
    op_floor:
        msg := 'FLOOR       ';
    op_fracround:
        msg := 'FRAC ROUND  ';
    op_fractrunc:
        msg := 'FRAC TRUNC  ';
    op_ge:
        msg := '>=          ';
    op_gt:
        msg := '>           ';
    op_hex:
        msg := 'OP HEX      ';
    op_in:
        msg := 'IN          ';
    op_initcap:
        msg := 'INITCAP     ';
    op_intdiv:
        msg := 'INTDIV      ';
    op_is_integer:
        msg := 'IS INTEGER  ';
    op_jmp_ins_upd:
        msg := 'JUMP INS UPD';
    op_join_key:
        msg := 'JOIN KEY    ';
    op_le:
        msg := '<=          ';
    op_length:
        msg := 'LENGTH      ';
    op_like:
        msg := 'LIKE        ';
    op_lowcase:
        msg := 'LOWCASE     ';
    op_lt:
        msg := '<           ';
    op_makedate:
        msg := 'MAKE DATE   ';
    op_maketime:
        msg := 'MAKE TIME   ';
    op_minus:
        msg := '-           ';
    op_minus_monad:
        msg := '- (monad)   ';
    op_mod:
        msg := 'MOD         ';
    op_mod_func:
        msg := 'MOD FUNC    ';
    op_mult:
        msg := '*           ';
    op_ne:
        msg := '<>          ';
    op_not:
        msg := 'NOT         ';
    op_not_between:
        msg := 'NOT BETWEEN ';
    op_not_in:
        msg := 'NOT IN      ';
    op_not_like:
        msg := 'NOT LIKE    ';
    op_not_null:
        msg := 'IS NOT NULL ';
    op_not_sounds:
        msg := 'NOT SOUNDS  ';
    op_null:
        msg := 'IS NULL     ';
    op_num:
        msg := 'NUM         ';
    op_odd:
        msg := 'ODD         ';
    op_or:
        msg := 'OR          ';
    op_order_asc:
        msg := 'ORDER ASC   ';
    op_order_desc:
        msg := 'ORDER DESC  ';
    op_order_desc_ascii:
        msg := 'ORD DSC ASCI';
    op_order_desc_ebcdic:
        msg := 'ORD DSC EBCD';
    op_outer_join:
        msg := 'OUTER JOIN  ';
    op_plus:
        msg := '+           ';
    op_power:
        msg := 'POWER       ';
    op_remove:
        msg := 'REMOVE      ';
    op_replace:
        msg := 'REPLACE     ';
    op_round:
        msg := 'ROUND       ';
    op_serial :
        msg := 'SERIAL      ';
    op_sign:
        msg := 'SIGN        ';
    op_soundex:
        msg := 'SOUNDEX     ';
    op_sounds:
        msg := 'SOUNDS      ';
    op_sqrt:
        msg := 'SQRT        ';
    op_stamp:
        msg := 'STAMP       ';
    op_subdate:
        msg := 'SUB DATE    ';
    op_subtime:
        msg := 'SUB TIME    ';
    op_swap :
        msg := 'SWAP        ';
    op_copy :
        msg := 'COPY        ';
    op_time:
        msg := 'TIME        ';
    op_test_zero:
        msg := 'TEST_ZERO   ';
    op_timediff:
        msg := 'TIME DIFF   ';
    op_timestamp:
        msg := 'TIMESTAMP   ';
    op_translate:
        msg := 'TRANSLATE   ';
    op_trunc:
        msg := 'TRUNC       ';
    op_unique:
        msg := 'UNIQUE      ';
    op_unique_desc:
        msg := 'UNIQUE DESC ';
    op_unique_desc_ascii:
        msg := 'UNQ DSC ASCI';
    op_unique_desc_ebcdic:
        msg := 'UNQ DSC EBCD';
    op_unique_expr_upd:
        msg := 'UNQ EXPR UPD';
    op_upcase:
        msg := 'UPCASE      ';
    op_upd_view_and:
        msg := 'UPD VIEW AND';
    op_get_sub_value:
        msg := 'SUBQ VAL GET';
    op_weekofyear:
        msg := 'WEEK OF YEAR';
    op_hextoraw:
        msg := 'HEXTORAW    ';
    op_addmonth:
        msg := 'ADDMONTH    ';
    op_submonth:
        msg := 'SUBMONTH    ';
    op_last_day:
        msg := 'LAST_DAY    ';
    op_months_between:
        msg := 'MONTHS_BETWE';
    op_late_asc_unique_check :
        msg := 'LATE ASC    ';
    op_late_desc_unique_check :
        msg := 'LATE DESC   ';
    op_nextval:
        msg := 'NEXTVAL     ';
    op_scol_upd:
        msg := 'SCOL UPD    ';
    op_longcol_update:
        msg := 'LONGCOL UPD ';
    op_true:
        msg := 'IS TRUE     ';
    op_false:
        msg := 'IS FALSE    ';
    op_undef_to_false:
        msg := 'UNDEF->FALSE';
    op_updated :
        msg := 'UPDATED     ';
    OTHERWISE
        BEGIN
        msg := 'STACK_OP=   ';
        g17int4to_line (ord(op), c_with_zero, 3, 1, ln);
        msg [10] := ln [1];
        msg [11] := ln [2];
        msg [12] := ln [3]
        END
    END;
(*ENDCASE*) 
len := sizeof (msg);
WHILE msg [len] = ' ' DO
    len := len - 1
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17st2op_func (
            op          : tgg00_StackOpFunc;
            VAR len     : integer;
            VAR msg     : tsp00_Sname);
 
VAR
      ln : tsp00_Line;
 
BEGIN
CASE op OF
    op_f_none:
        msg := 'NONE        ';
    op_f_all_count:
        msg := 'ALL COUNT   ';
    op_f_avg:
        msg := 'AVG         ';
    op_f_check_null:
        msg := 'CHECK NULL  ';
    op_f_count:
        msg := 'COUNT       ';
    op_f_count_kb:
        msg := 'COUNT KB    ';
    op_f_dis_avg:
        msg := 'DIS AVG     ';
    op_f_dis_count:
        msg := 'DIS COUNT   ';
    op_f_dis_sum:
        msg := 'DIS SUM     ';
    op_f_max:
        msg := 'MAX         ';
    op_f_min:
        msg := 'MIN         ';
    op_f_sum:
        msg := 'SUM         ';
    op_f_stddev:
        msg := 'STDDEV      ';
    op_f_dis_stddev:
        msg := 'DIS STDDEV  ';
    op_f_variance:
        msg := 'VARIANCE    ';
    op_f_dis_variance:
        msg := 'DIS VARIANCE';
    OTHERWISE
        BEGIN
        msg := 'STACK_OP=   ';
        g17int4to_line (ord(op), c_with_zero, 3, 1, ln);
        msg [10] := ln [1];
        msg [11] := ln [2];
        msg [12] := ln [3]
        END
    END;
(*ENDCASE*) 
len := sizeof (msg);
WHILE msg [len] = ' ' DO
    len := len - 1
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17st3op_output (
            op            : tgg00_StackOpOutput;
            VAR len       : integer;
            VAR msg       : tsp00_Sname);
 
VAR
      ln : tsp00_Line;
 
BEGIN
CASE op OF
    op_o_none:
        msg := 'NONE        ';
    op_o_output:
        msg := 'OUT         ';
    op_o_output_fixcol:
        msg := 'OUT FIXCOL  ';
    op_o_output_fixkey:
        msg := 'OUT FIXKEY  ';
    op_o_output_hold:
        msg := 'OUT HOLD    ';
    op_o_output_key:
        msg := 'OUT KEY     ';
    op_o_output_later:
        msg := 'OUT LATER   ';
    op_o_output_longvar:
        msg := 'OUT LONGVAR ';
    op_o_output_no_oflw:
        msg := 'OUT NO OFLW ';
    op_o_output_oflw:
        msg := 'OUT OFLW    ';
    op_o_output_order:
        msg := 'OUT ORDER   ';
    op_o_output_var:
        msg := 'OUT VAR     ';
    op_o_output_not_fill:
        msg := 'OUT NOT FILL';
    op_o_output_outer_join:
        msg := 'OUT OUTER JO';
    (* PTS 1116801 E.Z. *)
    op_o_output_column:
        msg := 'OUT COLUMN  ';
    OTHERWISE
        BEGIN
        msg := 'STACK_OP=   ';
        g17int4to_line (ord(op), c_with_zero, 3, 1, ln);
        msg [10] := ln [1];
        msg [11] := ln [2];
        msg [12] := ln [3]
        END;
    END;
(*ENDCASE*) 
len := sizeof (msg);
WHILE msg [len] = ' ' DO
    len := len - 1
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17st4op_build_in (
            op              : tgg00_StackOpBuildIn;
            VAR len         : integer;
            VAR msg         : tsp00_Sname);
 
VAR
      ln : tsp00_Line;
 
BEGIN
CASE op OF
    op_b_none:
        msg := 'NONE        ';
    op_b_acos:
        msg := 'ACOS        ';
    op_b_ascii_ora:
        msg := 'ASCII_ORA   ';
    op_b_asin:
        msg := 'ASIN        ';
    op_b_atan:
        msg := 'ATAN        ';
    op_b_atan2:
        msg := 'ATAN2       ';
    op_b_case_start:
        msg := 'CASE START  ';
    op_b_case_stop:
        msg := 'CASE STOP   ';
    op_b_check_format:
        msg := 'CHECK FORMAT';
    op_b_checklen:
        msg := 'CHECKLEN    ';
    op_b_chr:
        msg := 'CHR         ';
    op_b_chr_ora:
        msg := 'CHR_ORA     ';
    op_b_concat:
        msg := 'CONCAT      ';
    op_b_cos:
        msg := 'COS         ';
    op_b_cosh:
        msg := 'COSH        ';
    op_b_cot:
        msg := 'COT         ';
    op_b_currval:
        msg := 'CURRVAL     ';
    op_b_datetime:
        msg := 'DATETIME    ';
    op_b_dayofmonth:
        msg := 'DAYOFMONTH  ';
    op_b_dbyte_concat:
        msg := 'DBYTE CONCAT';
    op_b_dbyte_lfill:
        msg := 'DBYTE LFILL ';
    op_b_dbyte_lpad:
        msg := 'DBYTE LPAD  ';
    op_b_dbyte_ltrim:
        msg := 'DBYTE LTRIM ';
    op_b_dbyte_rfill:
        msg := 'DBYTE RFILL ';
    op_b_dbyte_rpad:
        msg := 'DBYTE RPAD  ';
    op_b_dbyte_rtrim:
        msg := 'DBYTE RTRIM ';
    op_b_dbyte_substr:
        msg := 'DBYTE SUBSTR';
    op_b_dbyte_trim:
        msg := 'DBYTE TRIM  ';
    op_b_decode:
        msg := 'DECODE      ';
    op_b_degrees:
        msg := 'DEGREES     ';
    op_b_exp:
        msg := 'EXP         ';
    op_b_expand:
        msg := 'EXPAND      ';
    op_b_float:
        msg := 'INTERN FLOAT';
    op_b_format_change:
        msg := 'FORMAT CHNGE';
    op_b_greatest:
        msg := 'GREATEST    ';
    op_b_index:
        msg := 'INDEX       ';
    op_b_least:
        msg := 'LEAST       ';
    op_b_left:
        msg := 'LEFT        ';
    op_b_length_ora:
        msg := 'LENGTH_ORA  ';
    op_b_lfill:
        msg := 'LFILL       ';
    op_b_ln:
        msg := 'LN          ';
    op_b_log:
        msg := 'LOG         ';
    op_b_log10:
        msg := 'LOG10       ';
    op_b_lpad:
        msg := 'LPAD        ';
    op_b_ltrim:
        msg := 'LTRIM       ';
    op_b_namefromdate:
        msg := 'NAMEFROMDATE';
    op_b_new_time:
        msg := 'NEW_TIME    ';
    op_b_next_day:
        msg := 'NEXT_DAY    ';
    op_b_pi:
        msg := 'PI          ';
    op_b_radians:
        msg := 'RADIANS     ';
    op_b_rfill:
        msg := 'RFILL       ';
    op_b_right:
        msg := 'RIGHT       ';
    op_b_rpad:
        msg := 'RPAD        ';
    op_b_rtrim:
        msg := 'RTRIM       ';
    op_b_sin:
        msg := 'SIN         ';
    op_b_sinh:
        msg := 'SINH        ';
    op_b_space:
        msg := 'SPACE       ';
    op_b_substr:
        msg := 'SUBSTR      ';
    op_b_tan:
        msg := 'TAN         ';
    op_b_tanh:
        msg := 'TANH        ';
    op_b_to_char:
        msg := 'TO_CHAR     ';
    op_b_to_date:
        msg := 'TO_DATE     ';
    op_b_to_24_char:
        msg := 'TO_CHAR (24)';
    op_b_toidentifier:
        msg := 'TOIDENTIFIER';
    op_b_trim:
        msg := 'TRIM        ';
    op_b_ts_trunc:
        msg := 'TRUNC (TS)  ';
    op_b_ts_round:
        msg := 'ROUND (TS)  ';
    op_b_uni_trans:
        msg := 'UNI TRANS   ';
    op_b_user_def_func:
        msg := 'USER FUNC   ';
    op_b_value:
        msg := 'VALUE FUNCTI';
    OTHERWISE
        BEGIN
        msg := 'OP_B =      ';
        g17int4to_line (ord(op), c_with_zero, 3, 1, ln);
        msg [ 8] := ln [1];
        msg [ 9] := ln [2];
        msg [10] := ln [3]
        END
    END;
(*ENDCASE*) 
len := sizeof (msg);
WHILE msg [len] = ' ' DO
    len := len - 1
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17surrogate_to_line (
            VAR surrogate : tgg00_Surrogate;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      site : tgg00_ServerdbNo;
      i    : integer;
 
BEGIN
site [1] := surrogate [1];
site [2] := surrogate [2];
g17siteto_line (site, ln_len, ln);
ln_len      := ln_len + 1;
ln [ln_len] := '-';
i := sizeof (site) + 1;
WHILE (i < sizeof (surrogate)) AND (surrogate [i] = chr(0)) DO
    i := i + 1;
(*ENDWHILE*) 
WHILE i <= sizeof (surrogate) DO
    BEGIN
    g17hexto_line (surrogate [i], ln_len, ln);
    IF  i = 4
    THEN
        ln_len := ln_len + 1;
    (*ENDIF*) 
    i := i + 1
    END
(*ENDWHILE*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17tasktype_to_line (
            task_type  : tsp00_Uint1;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      is_ok : boolean;
      n     : tsp00_Sname;
 
      univ_type : RECORD
            CASE integer OF
                1:
                    (task_int  : tsp00_Uint1);
                2:
                    (task_enum : tsp2_process_type)
                END;
            (*ENDCASE*) 
 
 
BEGIN
is_ok              := true;
univ_type.task_int := task_type;
CASE univ_type.task_enum OF
    sp2pt_utility:
        n := 'utility     ';
    sp2pt_timeout:
        n := 'timeout     ';
    sp2pt_log_writer:
        n := 'log_writer  ';
    sp2pt_trace_writer:
        n := 'trace_writer';
    sp2pt_sender:
        n := 'sender      ';
    sp2pt_receiver:
        n := 'receiver    ';
    sp2pt_server:
        n := 'server      ';
    sp2pt_data_writer:
        n := 'data_writer ';
    sp2pt_conv_scanner:
        n := 'conv_scanner';
    sp2pt_event:
        n := 'event       ';
    sp2pt_garbage_collector:
        n := 'garbage coll';
    sp2pt_objlog_writer:
        n := 'objlog_write';
    OTHERWISE
        is_ok := false
    END;
(*ENDCASE*) 
IF  is_ok
THEN
    g17sname_to_line (n, ln_len, ln)
ELSE
    BEGIN
    g17sname_to_line ('task_type=  ', ln_len, ln);
    g17trimint4_to_line (task_type, ln_len, ln)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17tfntype_to_line (
            tfn        : tgg00_Tfn;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE tfn OF
    tfnSys_egg00:
        msg := 'Sys         ';
    tfnColumn_egg00:
        msg := 'Column      ';
    tfnAux_egg00:
        msg := 'Aux         ';
    tfnOmsInv_egg00:
        msg := 'OmsIndex    ';
    tfnMulti_egg00:
        msg := 'Index       ';
    tfnInvSubtree_egg00:
        msg := 'IndexSubtree';
    tfnTempInv_egg00:
        msg := 'TempIndex   ';
    tfnNil_egg00:
        msg := 'Nil         ';
    tfnTable_egg00:
        msg := 'Table       ';
    tfnShortScol_egg00:
        msg := 'ShortColumn ';
    tfnTemp_egg00:
        msg := 'Temp        ';
    tfnTempAux_egg00:
        msg := 'TempAux     ';
    tfnTempLog_egg00:
        msg := 'TempLog     ';
    tfnLog_egg00:
        msg := 'Log         ';
    tfnObj_egg00:
        msg := 'Obj         ';
    tfnObjBefore_egg00:
        msg := 'tfnObjBefore';
    tfnContObj_egg00:
        msg := 'ContObj     ';
    tfnUndoLog_egg00:     (*Logging74 UH *)
        msg := 'UndoLog     ';
    tfnRedoLog_egg00:     (*Logging74 UH *)
        msg := 'RedoLog     ';
    tfnHistory_egg00:     (*Logging74 UH *)
        msg := 'History     ';
    tfnHistoryDirectory_egg00: (*Logging74 UH *)
        msg := 'HistDir     ';
    tfnOpenTrans_egg00:   (*Logging74 UH *)
        msg := 'OpenTrans   ';
    tfnTempOms_egg00:
        msg := 'OmsUnloaded ';
    OTHERWISE
        BEGIN
        msg := 'TFN=        ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(tfn), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17time_to_line (
            time            : tsp00_Time;
            VAR ln_len      : integer;
            VAR ln          : tsp00_Line);
 
BEGIN
ln [ln_len+1] := time [3];
ln [ln_len+2] := time [4];
ln [ln_len+3] := ':';
ln [ln_len+4] := time [5];
ln [ln_len+5] := time [6];
ln [ln_len+6] := ':';
ln [ln_len+7] := time [7];
ln [ln_len+8] := time [8];
ln_len        := ln_len + 8
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17trans_state_to_line (
            trans_state : tgg00_TransState;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      old_ln_len : integer;
 
BEGIN
IF  trans_state = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    old_ln_len := ln_len;
    IF  tsLocked_egg00 in trans_state
    THEN
        g17sname_to_line (' Locked     ', ln_len, ln);
    (*ENDIF*) 
    IF  tsTempUpdated_egg00 in trans_state
    THEN
        g17sname_to_line (' TmpUpd     ', ln_len, ln);
    (*ENDIF*) 
    IF  tsSurrogateUpd_egg00 in trans_state
    THEN
        g17sname_to_line (' SurrUpd    ', ln_len, ln);
    (*ENDIF*) 
    IF  tsBdLocked_egg00 in trans_state
    THEN
        g17sname_to_line (' BdLock     ', ln_len, ln);
    (*ENDIF*) 
    IF  tsDbFullNowait_egg00 in trans_state               (* PTS 1106067 JA 2000-03-21 *)
    THEN
        g17sname_to_line (' Nowait     ', ln_len, ln);    (* PTS 1106067 JA 2000-03-21 *)
    (*ENDIF*) 
    IF  tsRollback_egg00 in trans_state
    THEN
        g17sname_to_line (' Rollb      ', ln_len, ln);
    (*ENDIF*) 
    IF  tsFunctRollbSet_egg00 in trans_state
    THEN
        g17sname_to_line (' FnctRollb  ', ln_len, ln);
    (*ENDIF*) 
    IF  tsUpdated_egg00 in trans_state
    THEN
        g17sname_to_line (' Upd        ', ln_len, ln);
    (*ENDIF*) 
    IF  tsAccessedInSession_egg00 in trans_state
    THEN
        g17sname_to_line (' Acc        ', ln_len, ln);
    (*ENDIF*) 
    IF  tsErrTextExist_egg00 in trans_state
    THEN
        g17sname_to_line (' ErrTxt     ', ln_len, ln);
    (*ENDIF*) 
    IF  tsSubUpdated_egg00 in trans_state
    THEN
        g17sname_to_line (' SubUpd     ', ln_len, ln);
    (*ENDIF*) 
    IF  ln_len > mx_protline
    THEN
        BEGIN
        IF  ln_len <= sizeof (ln)
        THEN
            SAPDB_PascalForcedFill (sizeof (ln), @ln,
                  old_ln_len+1, ln_len - old_ln_len, ' ');
        (*ENDIF*) 
        ln_len := old_ln_len;
        IF  tsLocked_egg00 in trans_state
        THEN
            g17sname_to_line (' lo         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsTempUpdated_egg00 in trans_state
        THEN
            g17sname_to_line (' te         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsSurrogateUpd_egg00 in trans_state
        THEN
            g17sname_to_line (' sur        ', ln_len, ln);
        (*ENDIF*) 
        IF  tsDbFullNowait_egg00 in trans_state               (* PTS 1106067 JA 2000-03-21 *)
        THEN
            g17sname_to_line (' nw         ', ln_len, ln);    (* PTS 1106067 JA 2000-03-21 *)
        (*ENDIF*) 
        IF  tsBdLocked_egg00 in trans_state
        THEN
            g17sname_to_line (' bl         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsRollback_egg00 in trans_state
        THEN
            g17sname_to_line (' ro         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsFunctRollbSet_egg00 in trans_state
        THEN
            g17sname_to_line (' fu         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsUpdated_egg00 in trans_state
        THEN
            g17sname_to_line (' up         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsAccessedInSession_egg00 in trans_state
        THEN
            g17sname_to_line (' ac         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsErrTextExist_egg00 in trans_state
        THEN
            g17sname_to_line (' er         ', ln_len, ln);
        (*ENDIF*) 
        IF  tsSubUpdated_egg00 in trans_state
        THEN
            g17sname_to_line (' sub        ', ln_len, ln);
        (*ENDIF*) 
        END
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17trimint4_to_line (
            intval     : tsp00_Int4;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      rem   : tsp00_Int4;
      i     : integer;
      len   : integer;
 
BEGIN
IF  intval < 0
THEN
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := '-';
    rem         := -intval
    END
ELSE
    rem := intval;
(*ENDIF*) 
len := 1;
WHILE rem >= 10 DO
    BEGIN
    len := len + 1;
    rem := rem DIV 10
    END;
(*ENDWHILE*) 
IF  intval < 0
THEN
    rem := -intval
ELSE
    rem := intval;
(*ENDIF*) 
FOR i := len DOWNTO 1 DO
    BEGIN
    ln [ln_len+i] := chr ((rem MOD 10) + ord('0'));
    rem := rem DIV 10
    END;
(*ENDFOR*) 
ln_len := ln_len + len
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17ttfntemp_to_line (
            ttfn       : tgg00_TfnTemp;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE ttfn OF
    ttfnNone_egg00:
        msg := 'ttfnNone          ';
    ttfnComplexSelect_egg00:
        msg := 'ttfnComplexSelect ';
    ttfnComplexView_egg00:
        msg := 'ttfnComplexView   ';
    ttfnFromSelect_egg00:
        msg := 'ttfnFromSelect    ';
    ttfnUserResult_egg00:
        msg := 'ttfnUserResul     ';
    ttfnTempTable_egg00:
        msg := 'ttfnTempTable     ';
    ttfnPars_egg00:
        msg := 'ttfnPars          ';
    ttfnParsTrigger_egg00:
        msg := 'ttfnParsTrigge    ';
    ttfnInto_egg00:
        msg := 'ttfnInto          ';
    ttfnKeyUpdate_egg00:
        msg := 'ttfnKeyUpdate     ';
    ttfnUsage_egg00:
        msg := 'ttfnUsage         ';
    ttfnJoinResult_egg00:
        msg := 'ttfnJoinResul     ';
    ttfnSubquery_egg00:
        msg := 'ttfnSubquery      ';
    ttfnCorrelation_egg00:
        msg := 'ttfnCorrelation   ';
    ttfnLink_egg00:
        msg := 'ttfnLink          ';
    ttfnColumn_egg00:
        msg := 'ttfnColumn        ';
    ttfnDistinct_egg00:
        msg := 'ttfnDistinct      ';
    ttfnSaveScheme_egg00:
        msg := 'ttfnSaveScheme    ';
    ttfnErrorText_egg00:
        msg := 'ttfnErrorText     ';
    ttfnUnion_egg00:
        msg := 'ttfnUnion         ';
    ttfnUnionIndex_egg00:
        msg := 'ttfnUnionIndex    ';
    ttfnInternResult_egg00:
        msg := 'ttfnInternResult  ';
    ttfnOuterJoinKeys_egg00:
        msg := 'ttfnOuterJoinKeys ';
    ttfnOuterJoin_egg00:
        msg := 'ttfnOuterJoin     ';
    ttfnUnionIntersect_egg00:
        msg := 'ttfnUnionIntersect';
    ttfnTrigger_egg00:
        msg := 'ttfnTrigger       ';
    ttfnLateUniqueCheck_egg00 :
        msg := 'ttfnLateUniqueChck';
    ttfnCacheRollback_egg00 :
        msg := 'ttfnCacheRollback ';
    ttfnLogPosList_egg00:
        msg := 'ttfnLogPosList    ';
    ttfnOnlinePno_egg00:
        msg := 'ttfnOnlinePno     ';
    ttfnRecursive_egg00:
        msg := 'ttfnRecursive     ';
    OTHERWISE
        BEGIN
        msg := 'TTFN=             ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord(ttfn), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17vftype (
            ft         : tsp00_VfType;
            VAR ln_len : tsp00_Int4;
            VAR ln     : tsp00_Line);
 
CONST
      MAX_LEN = 10;
 
VAR
      n : tsp00_Name;
 
BEGIN
IF  ln_len + MAX_LEN <= sizeof (ln)
THEN
    BEGIN
    CASE ft OF
        vf_t_unknown:
            n := 'vftUnknown        ';
        vf_t_file:
            n := 'vftFile           ';
        vf_t_pipe:
            n := 'vftPipe           ';
        vf_t_raw:
            n := 'vftRaw            ';
        vf_t_tape_norew:
            n := 'vftTapeNoRew      ';
        vf_t_tape_rew:
            n := 'vftTapeRew        ';
        OTHERWISE
            n := 'vft_otherwise     ';
        END;
    (*ENDCASE*) 
    s10mv (sizeof (n), sizeof (ln), @n, 1, @ln, ln_len+1, MAX_LEN);
    ln_len := ln_len + MAX_LEN
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17warning_item_to_line (
            warning_item : tsp00_Warnings;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      n : tsp00_Name;
 
BEGIN
g17sname_to_line ('WARNING     ', ln_len, ln);
ln_len := ln_len + 1;
g17int4to_line (ord (warning_item), NOT c_with_zero, 2, ln_len+2, ln);
ln_len := ln_len + 3;
CASE warning_item OF
    warn0_exist:
        n := 'warning_exists    ';
    warn1:
        n := 'values_truncated  ';
    warn2_null_in_builtin_func:
        n := 'null_in_function  ';
    warn3_output_not_into_columns:
        n := 'count_param_outcol';
    warn4_nullwhere:
        n := 'no_where_clause   ';
    warn6_end_of_month_adjustment:
        n := 'date_adjusted     ';
    warn8_scan_or_sort:
        n := 'table_scan        ';
    warn9:
        n := 'stmt_optimized    ';
    warn10_some_serverdbs_down:
        n := 'serverdb_down     ';
    warn11_time_value_too_long:
        n := 'time_overflow     ';
    warn12_rowno_used:
        n := 'rowno_limit       ';
    warn13_optional_column_indexed:
        n := 'opt_column_indexed';
    warn14_next_invlist:
        n := 'next_invlist      ';
    warn15_serverdb_not_in_majority:
        n := 'not_majority      ';
    OTHERWISE
        n := bsp_name
    END;
(*ENDCASE*) 
IF  n <> bsp_name
THEN
    BEGIN
    ln [ln_len+1] := ':';
    ln_len        := ln_len + 2;
    g17nameto_line (n, ln_len, ln)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      gg17bfc_stack (
            VAR st : tgg00_StackEntry;
            VAR ln : tsp00_Line);
 
VAR
      msg : tsp00_Sname;
 
BEGIN
CASE st.eformat OF
    dtf_none :
        msg := 'NONE        ';
    dtf_normal :
        msg := 'NORMAL      ';
    dtf_iso :
        msg := 'ISO         ';
    dtf_usa :
        msg := 'USA         ';
    dtf_eur, dtf_ts_eur :
        msg := 'EUR         ';
    dtf_jis :
        msg := 'JIS         ';
    dtf_oracle_date :
        msg := 'ORA         ';
    (* PTS 1112472 E.Z. *)
    OTHERWISE
        msg := bsp_sname
    END;
(*ENDCASE*) 
s10mv (sizeof (msg), sizeof (ln), @msg, 1, @ln, 19, 5);
CASE st.edatatype OF
    dfixed :
        msg := 'FIXED       ';
    dfloat :
        msg := 'FLOAT       ';
    dcha :
        msg := 'CHARA       ';
    dche :
        msg := 'CHARE       ';
    dchb :
        msg := 'CHARB       ';
    drowid :
        msg := 'ROWID       ';
    dstra :
        msg := 'STRA        ';
    dstre :
        msg := 'STRE        ';
    dstrb :
        msg := 'STRB        ';
    dstrdb :
        msg := 'STRDB       ';
    ddate :
        msg := 'DATE        ';
    dtime :
        msg := 'TIME        ';
    dtimestamp :
        msg := 'TSTMP       ';
    ddbyteebcdic :
        msg := 'DBE         ';
    OTHERWISE
        msg := bsp_sname
    END;
(*ENDCASE*) 
s10mv (sizeof (msg), sizeof (ln), @msg, 1, @ln, 24, 6);
ln[ 30 ] := st.elanguage[ 1 ];
ln[ 31 ] := st.elanguage[ 2 ];
ln[ 32 ] := st.elanguage[ 3 ];
ln[ 33 ] := bsp_c1;
g17int4to_line (st.elength, NOT c_with_zero, 3, 34, ln)
END;
 
(* PTS 1111575 E.Z. *)
(*------------------------------*) 
 
PROCEDURE
      gg17datatype_to_line (
            data_type  : tsp00_DataType;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Sname;
 
BEGIN
print_number := false;
CASE data_type OF
    dfixed:
        msg := 'fixed       ';
    dfloat:
        msg := 'float       ';
    dcha:
        msg := 'char_asc    ';
    dche:
        msg := 'char_ebc    ';
    dchb:
        msg := 'char_byte   ';
    drowid:
        msg := 'rowid       ';
    dstra:
        msg := 'string_asc  ';
    dstre:
        msg := 'string_ebc  ';
    dstrb:
        msg := 'string_byte ';
    dstrdb:
        msg := 'string_dbyte';
    ddate:
        msg := 'date        ';
    dtime:
        msg := 'time        ';
    dvfloat:
        msg := 'vfloat      ';
    dtimestamp:
        msg := 'timestamp   ';
    dunknown:
        msg := 'unknown     ';
    dnumber:
        msg := 'number      ';
    dnonumber:
        msg := 'nonumber    ';
    dduration:
        msg := 'duration    ';
    ddbyteebcdic:
        msg := 'dbyteebcdic ';
    dlonga:
        msg := 'long_asc    ';
    dlonge:
        msg := 'long_ebc    ';
    dlongb:
        msg := 'long_byte   ';
    dlongdb:
        msg := 'long_dbyte  ';
    dboolean:
        msg := 'boolean     ';
    dunicode:
        msg := 'unicode     ';
    dsmallint:
        msg := 'smallint    ';
    dinteger:
        msg := 'integer     ';
    dvarchara:
        msg := 'varchar_asc ';
    dvarchare:
        msg := 'varchar_ebc ';
    dvarcharb:
        msg := 'varchar_byte';
    dstruni:
        msg := 'string_unico';
    dlonguni:
        msg := 'long_unicode';
    dvarcharuni:
        msg := 'varchar_uni ';
    dabaptabhandle :
        msg := 'abap_handle ';
    OTHERWISE
        BEGIN
        msg          := 'DATATYPE=   ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17sname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (data_type), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      gg17delimiter_to_line (VAR ln_len : integer; VAR ln : tsp00_Line);
 
BEGIN
ln [ln_len+1] := ',';
ln_len        := ln_len + 2
END;
 
(*------------------------------*) 
 
PROCEDURE
      gg17iotype_to_line (
            io_type    : tsp1_param_io_type;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      msg      : tsp00_Sname;
      init_len : integer;
 
BEGIN
CASE io_type OF
    sp1io_input:
        msg := 'input       ';
    sp1io_output:
        msg := 'output      ';
    sp1io_inout:
        msg := 'inout       ';
    OTHERWISE
        msg := bsp_sname
    END;
(*ENDCASE*) 
init_len := ln_len;
g17sname_to_line (msg, ln_len, ln);
ln_len   := init_len+6
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17longreal_to_line (
            re        : tsp00_Longreal;
            digits    : integer;
            pos       : integer;
            VAR ln    : tsp00_Line);
 
VAR
      exp          : integer;  (* represents exponent of r          *)
      valid_digits : integer;  (* initial digits of r as an integer *)
      i            : integer;
      r            : tsp00_Longreal;
 
BEGIN
(* *** t01real *** *)
IF  re = 0
THEN
    ln [pos] := '0'
ELSE
    BEGIN
    r := re;
    IF  r < 0
    THEN
        BEGIN
        ln [pos] := '-';
        r        := -r
        END;
    (*ENDIF*) 
    ln [pos+1] := '0';
    ln [pos+2] := '.';
    pos        := pos + 3;
    exp        := 0; (* represents exponent of real number *)
    WHILE r >= 1 DO
        BEGIN
        r   := r / 10;
        exp := exp + 1
        END;
    (*ENDWHILE*) 
    WHILE r < 0.1 DO
        BEGIN
        r   := r * 10;
        exp := exp - 1;
        END;
    (*ENDWHILE*) 
    (* at this point exp is the exponent and r the *)
    (* fraction with 0.1 <= r < 1                  *)
    FOR i := 1 TO digits DO
        r := r * 10;
    (*ENDFOR*) 
    (* exponent function not available with all Pascal-Compilers *)
    valid_digits := trunc (r); (* reduce to demanded acuracy *)
    g17int4to_line (valid_digits, true, digits, pos, ln);
    (*WITH_ZERO: necessary as truncation yields 0.0999... from 0.1*)
    pos      := pos + digits;
    ln [pos] := 'E';
    IF  exp < 0
    THEN
        BEGIN
        ln [pos+1] := '-';
        exp        := -exp
        END
    ELSE
        ln [pos+1] := '+';
    (*ENDIF*) 
    pos := pos + 2;
    g17int4to_line (exp, true, 2, pos, ln); (*display exponent *)
    pos := pos + 2;
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      gg17optset_to_line (
            opt_set    : tsp1_param_opt_set;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
BEGIN
IF  opt_set <> [ ]
THEN
    BEGIN
    IF  sp1ot_mandatory in opt_set
    THEN
        g17sname_to_line ('mandatory,  ', ln_len, ln);
    (*ENDIF*) 
    IF  sp1ot_optional in opt_set
    THEN
        g17sname_to_line ('optional,   ', ln_len, ln);
    (*ENDIF*) 
    IF  sp1ot_default in opt_set
    THEN
        g17sname_to_line ('default,    ', ln_len, ln);
    (*ENDIF*) 
    IF  sp1ot_escape_char in opt_set
    THEN
        g17sname_to_line ('escape_char,', ln_len, ln);
    (*ENDIF*) 
    ln[ ln_len ] := ' ';
    ln_len       := pred (ln_len)
    END
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17stratenum_to_line (
            strat      : tgg07_StratEnum;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Name;
 
BEGIN
print_number := false;
CASE strat OF
    strat_key_equal:
        msg := 'KEY EQUAL         ';
    strat_key_equal_fetch:
        msg := 'KEY EQUAL FETCH   ';
    strat_key_in:
        msg := 'KEY IN            ';
    strat_key_subq:
        msg := 'KEY SUBQ          ';
    strat_inv_range:
        msg := 'INV RANGE         ';
    strat_inv_subq:
        msg := 'INV SUBQ          ';
    strat_inv_in:
        msg := 'INV IN            ';
    strat_key_range:
        msg := 'KEY RANGE         ';
    strat_inv_range_fetch:
        msg := 'INV RANGE FETCH   ';
    strat_inv_range_merge_fetch:
        msg := 'INV RANGE MERGE FE';
    strat_key_range_fetch:
        msg := 'KEY RANGE FETCH   ';
    strat_more_than_one:
        msg := 'MORE THAN ONE     ';
    strat_join_inv:
        msg := 'JOIN INV          ';
    strat_undecided:
        msg := 'UNDECIDED         ';
    strat_viewkey:
        msg := 'VIEWKEY           ';
    strat_join_key_next:
        msg := 'JOIN KEY NEXT     ';
    strat_join_key_equal:
        msg := 'JOIN KEY EQUAL    ';
    strat_join_viewkey:
        msg := 'JOIN VIEWKEY      ';
    strat_join_all_keys_equal:
        msg := 'JOIN ALLKEY EQUAL ';
    strat_join_key_range:
        msg := 'JOIN KEY RANGE    ';
    strat_join_all_inv_equal:
        msg := 'JOIN ALLINV EQUAL ';
    strat_join_inv_range:
        msg := 'JOIN INV RANGE    ';
    strat_catalog:
        msg := 'CATALOG           ';
    strat_no_result:
        msg := 'NO RESULT         ';
    OTHERWISE
        BEGIN
        msg := 'STRAT=            ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17nameto_line (msg, ln_len, ln);
IF  ( print_number )
THEN
    g17trimint4_to_line (ord(strat), ln_len, ln)
(*ENDIF*) 
END;
 
&ifdef BIT64
(*------------------------------*) 
 
PROCEDURE
      gg17_int8_to_line (
            intval              : long;
            VAR ln_len          : integer;
            VAR ln              : tsp00_Line (*ptocSynonym char**));
 
VAR
      rem  : long;
      int2 : tsp00_Int2;
      i    : integer;
      len  : integer;
 
BEGIN
(* PTS 1103743 JA 1999-08-25 *)
IF  intval < 0
THEN
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := '-';
    rem         := -intval
    END
ELSE
    rem := intval;
(*ENDIF*) 
len := 1;
WHILE rem >= 10 DO
    BEGIN
    len := len + 1;
    rem := rem DIV 10
    END;
(*ENDWHILE*) 
IF  intval < 0
THEN
    rem := -intval
ELSE
    rem := intval;
(*ENDIF*) 
FOR i := len DOWNTO 1 DO
    BEGIN
    int2 := rem MOD 10;
    rem  := rem DIV 10;
    ln [ln_len+i] := chr (int2 + ord('0'))
    END;
(*ENDFOR*) 
ln_len := ln_len + len
END;
 
&else
(*------------------------------*) 
 
PROCEDURE
      gg17_realcounter_to_line (
            realval    : tsp00_Longreal;
            VAR ln_len : integer;
            VAR ln     : tsp00_Line);
 
VAR
      r     : tsp00_Longreal;
      exp   : integer;
      i     : integer;
      digit : integer;
 
BEGIN
(* PTS 1103743 JA 1999-08-25 *)
IF  realval = 0
THEN
    BEGIN
    ln_len      := ln_len + 1;
    ln [ln_len] := '0'
    END
ELSE
    BEGIN
    r := realval;
    IF  r < 0
    THEN
        BEGIN
        ln_len      := ln_len + 1;
        ln [ln_len] := '-';
        r           := -r
        END;
    (*ENDIF*) 
    exp := 0; (* represents exponent of real number *)
    WHILE r >= 1 DO
        BEGIN
        r   := r / 10;
        exp := exp + 1
        END;
    (*ENDWHILE*) 
    (* at this point exp is the exponent and r the *)
    (* fraction with 0.1 <= r < 1                  *)
    IF  exp <= 0
    THEN
        BEGIN
        ln_len      := ln_len + 1;
        ln [ln_len] := '0'
        END
    ELSE
        FOR i := 1 TO exp DO
            BEGIN
            r     := r * 10;
            digit := trunc (r);
            r     := r - digit;
            g17trimint4_to_line (digit, ln_len, ln)
            END
        (*ENDFOR*) 
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
&endif
(*------------------------------*) 
 
PROCEDURE
      g17showkind_to_line (
            show_kind   : tgg00_ShowKind;
            VAR ln_len  : integer;
            VAR ln      : tsp00_Line);
 
VAR
      print_number : boolean;
      msg          : tsp00_Lname;
 
BEGIN
print_number := false;
CASE show_kind OF
    sh_no_kind :
        msg := 'no kind                         ';
    sh_bad_index :
        msg := 'bad index                       ';
    sh_column :
        msg := 'column                          ';
    sh_connect :
        msg := 'connect                         ';
    sh_connect_param :
        msg := 'connect params                  ';
    sh_constraint :
        msg := 'constraint                      ';
    sh_cons_columns :
        msg := 'cons_columns                    ';
    sh_domain_data :
        msg := 'domain data                     ';
    (* PTS 1115043 E.Z. *)
    sh_snapshot :
        msg := 'snapshot                        ';
    sh_dbm_state :
        msg := 'dbm state                       ';
    sh_explain :
        msg := 'explain                         ';
    sh_monitor_oms :
        msg := 'monitor oms                     ';
    sh_index :
        msg := 'index                           ';
    sh_link :
        msg := 'link                            ';
    sh_lock :
        msg := 'lock                            ';
    sh_mapset :
        msg := 'mapset                          ';
    sh_instance :
        msg := 'instance                        ';
    sh_p_prog :
        msg := 'p prog                          ';
    sh_param_dbproc :
        msg := 'param dbproc                    ';
    sh_param_trigger :
        msg := 'param trigger                   ';
    sh_priv_granted_to :
        msg := 'priv granted to                 ';
    sh_hotstandbycomponent :
        msg := 'hotstandbycomponent             ';
    sh_sequence :
        msg := 'sequence                        ';
    sh_hotstandbygroup :
        msg := 'hotstandbygroup                 ';
    sh_procedure :
        msg := 'procedure                       ';
    sh_ref_column :
        msg := 'ref column                      ';
    sh_serverdb :
        msg := 'serverdb                        ';
    sh_st_config :
        msg := 'st config                       ';
    sh_st_database :
        msg := 'st database                     ';
    sh_st_devspace :
        msg := 'st devspace                     ';
    sh_st_index :
        msg := 'st index                        ';
    sh_kernelmessages :
        msg := 'kernelmessages                  ';
    sh_st_monitor :
        msg := 'st monitor                      ';
    sh_st_state :
        msg := 'st state                        ';
    sh_st_table :
        msg := 'st table                        ';
    sh_st_user :
        msg := 'st user                         ';
    sh_synonym :
        msg := 'synonym                         ';
    sh_table :
        msg := 'table                           ';
    sh_table_stat :
        msg := 'table stats                     ';
    sh_trigger :
        msg := 'trigger                         ';
    sh_u_domain :
        msg := 'u domain                        ';
    sh_user :
        msg := 'user                            ';
    sh_version_old :
        msg := 'version_old                     ';
    sh_view :
        msg := 'view                            ';
    sh_all_column :
        msg := 'all cilumn                      ';
    sh_all_constraint :
        msg := 'all constraint                  ';
    sh_all_cons_columns :
        msg := 'all cons column                 ';
    sh_all_foreign_key :
        msg := 'all foreign key                 ';
    sh_all_index :
        msg := 'all indexes                     ';
    sh_all_priv_granted :
        msg := 'all priv granted                ';
    sh_all_procedures :
        msg := 'all procedures                  ';
    sh_all_sequences :
        msg := 'all sequences                   ';
    sh_all_synonyms :
        msg := 'all synonyms                    ';
    sh_all_table :
        msg := 'all table                       ';
    sh_all_triggers :
        msg := 'all triggers                    ';
    sh_all_user :
        msg := 'all users                       ';
    sh_all_views :
        msg := 'all views                       ';
    sh_all_ref_columns :
        msg := 'all ref columns                 ';
    sh_info_gc_stats :
        msg := 'info gc stats                   ';
    sh_sysmon_connection :
        msg := 'sysmon connection               ';
    sh_dbfunctions :
        msg := 'dbfunctions                     ';
    sh_view_uses_table :
        msg := 'view uses table                 ';
    sh_trans :
        msg := 'trans                           ';
    sh_all_view_uses_table :
        msg := 'all view uses tab               ';
    sh_new_privileges :
        msg := 'new privileges                  ';
    sh_all_new_privileges :
        msg := 'all new privileges              ';
    sh_domain_constraints :
        msg := 'donmain constraint              ';
    sh_dbfunc_parameters :
        msg := 'dbfunc param                    ';
    sh_xparam :
        msg := 'xparam                          ';
    sh_st_lock :
        msg := 'st lock                         ';
    sh_odbc_st_index :
        msg := 'odbc st index                   ';
    sh_odbc_st_table :
        msg := 'odbc st table                   ';
    sh_fill3a :
        msg := 'fill3a                          ';
    sh_object :
        msg := 'object                          ';
    sh_objectlocks :
        msg := 'object locks                    ';
    sh_all_object :
        msg := 'all object                      ';
    sh_pages :
        msg := 'pages                           ';
    sh_roots :
        msg := 'roots                           ';
    sh_session_roles :
        msg := 'session roles                   ';
    sh_roles :
        msg := 'roles                           ';
    sh_all_roles :
        msg := 'all roles                       ';
    sh_odbc_columns :
        msg := 'odbs columns                    ';
    sh_show_view :
        msg := 'show view                       ';
    sh_methods :
        msg := 'methods                         ';
    sh_oms_versions :
        msg := 'oms versions                    ';
    sh_ctrl_configuration :
        msg := 'ctrl configuration              ';
    sh_ctrl_devspaces :
        msg := 'ctrl devspaces                  ';
    sh_ctrl_io_statistics :
        msg := 'ctrl io statistics              ';
    sh_ctrl_log :
        msg := 'ctrl log                        ';
    (*    sh_ctrl_cache :
          msg := 'ctrl cache                      '; *)
    (*PTS 1120445 D.T. *)
    sh_oms_containers :
        msg := 'oms containers                  ';
    sh_ctrl_locks :
        msg := 'ctrl locks                      ';
    sh_indexpages :
        msg := 'indexpages                      ';
    sh_files_old :
        msg := 'files_old                       ';
    sh_running_cmds :
        msg := 'running cmds                    ';
    sh_schema :
        msg := 'schema                          ';
    sh_sysmon_region :
        msg := 'sysmon region                   ';
    sh_sysmon_storage :
        msg := 'sysmon storage                  ';
    sh_sysmon_ioaccess :
        msg := 'sysmon ioaccess                 ';
    sh_sysmon_backupioaccess :
        msg := 'sysmon bckp ioacce              ';
    sh_sysmon_specthread :
        msg := 'sysmon specthread               ';
    sh_sysmon_ukthread :
        msg := 'sysmon ukthread                 ';
    sh_sysmon_deviothread :
        msg := 'sysmon deviothread              ';
    sh_sysmon_task :
        msg := 'sysmon task                     ';
    sh_sysmon_active_task :
        msg := 'sysmon active task              ';
    sh_sysmon_runnable :
        msg := 'sysmon runnable                 ';
    sh_sysmon_us :
        msg := 'sysmon us                       ';
    sh_sysmon_us_active :
        msg := 'sysmon us active                ';
    sh_sysmon_us_runnable :
        msg := 'sysmon us runnable              ';
    sh_sysmon_sv :
        msg := 'sysmon sv                       ';
    sh_sysmon_sv_active :
        msg := 'sysmon sv active                ';
    sh_sysmon_sv_runnable :
        msg := 'sysmon sv runnable              ';
    sh_sysmon_dw :
        msg := 'sysmon dw                       ';
    sh_sysmon_dw_active :
        msg := 'sysmon dw active                ';
    sh_sysmon_dw_runnable :
        msg := 'sysmon dw runnable              ';
    sh_sysmon_totalcount :
        msg := 'sysmon totalcount               ';
    sh_sysmon_task_detail :
        msg := 'sysmon task detail              ';
    sh_parsinfos :
        msg := 'parsinfos                       ';
    (* BEGIN PTS 1115043 E.Z. *)
    sh_activeconfiguration :
        msg := 'activeconfiguration             ';
    sh_backupinformation :
        msg := 'backupinformation               ';
    sh_backupthreads :
        msg := 'backupthreads                   ';
    sh_cachestatistics :
        msg := 'cachestatistics                 ';
    sh_cachestatisticsreset :
        msg := 'cachestatisticsreset            ';
    sh_classcontainers :
        msg := 'classcontainers                 ';
    sh_classcontainerstatistics :
        msg := 'classcontainerstatistics        ';
    sh_classcontainerstatisticsreset :
        msg := 'classcontainerstatisticsreset   ';
    sh_datacache :
        msg := 'datacache                       ';
    sh_datastatistics :
        msg := 'datastatistics                  ';
    sh_datastatisticsreset :
        msg := 'datastatisticsreset             ';
    sh_datavolumes :
        msg := 'datavolumes                     ';
    sh_diagnose :
        msg := 'diagnose                        ';
    sh_events :
        msg := 'events                          ';
    sh_files :
        msg := 'files                           ';
    sh_historycleanupstatistics :
        msg := 'historycleanupstatistics        ';
    sh_historycleanupstatisticsreset :
        msg := 'historycleanupstatisticsreset   ';
    sh_indexsizedetails :
        msg := 'indexsizedetails                ';
    sh_iothreadstatistics :
        msg := 'iothreadstatistics              ';
    sh_iothreadstatisticsreset :
        msg := 'iothreadstatisticsreset         ';
    sh_locks :
        msg := 'locks                           ';
    sh_lockstatistics :
        msg := 'lockstatistics                  ';
    sh_lockstatisticsreset :
        msg := 'lockstatisticsreset             ';
    sh_logstatistics :
        msg := 'logstatistics                   ';
    sh_logstatisticsreset :
        msg := 'logstatisticsreset              ';
    sh_logvolumes :
        msg := 'logvolumes                      ';
    sh_memoryallocatorstatistics :
        msg := 'memoryallocatorstatistics       ';
    sh_memoryallocatorstatisticsreset :
        msg := 'memoryallocatorstatisticsreset  ';
    sh_memoryholders :
        msg := 'memoryholders                   ';
    sh_miscellaneous :
        msg := 'miscellaneous                   ';
    sh_omslocks :
        msg := 'omslocks                        ';
    sh_omsprocedurestatistics :
        msg := 'omsprocedurestatistics          ';
    sh_omsprocedurestatisticsreset :
        msg := 'omsprocedurestatisticsreset     ';
    sh_omsversions :
        msg := 'omsversions                     ';
    sh_optimizerinformation :
        msg := 'optimizerinformation            ';
    sh_pagelocks :
        msg := 'pagelocks                       ';
    sh_readerwriterlockstatistics :
        msg := 'readerwriterlockstatistics      ';
    sh_readerwriterlockstatisticsreset :
        msg := 'readerwriterlockstatisticsreset ';
    sh_regionlocks :
        msg := 'regionlocks                     ';
    sh_regionstatistics :
        msg := 'regionstatistics                ';
    sh_regionstatisticsreset :
        msg := 'regionstatisticsreset           ';
    sh_restartinformation :
        msg := 'restartinformation              ';
    sh_schemas :
        msg := 'schemas                         ';
    sh_sessions :
        msg := 'sessions                        ';
    sh_spinlockpoolstatistics :
        msg := 'spinlockpoolstatistics          ';
    sh_spinlockpoolstatisticsreset :
        msg := 'spinlockpoolstatisticsreset     ';
    sh_spinlockstatistics :
        msg := 'spinlockstatistics              ';
    sh_spinlockstatisticsreset :
        msg := 'spinlockstatisticsreset         ';
    sh_tablesizedetails :
        msg := 'tablesizedetails                ';
    sh_taskgroupstatistics :
        msg := 'taskgroupstatistics             ';
    sh_taskgroupstatisticsreset :
        msg := 'taskgroupstatisticsreset        ';
    sh_taskstatistics :
        msg := 'taskstatistics                  ';
    sh_taskstatisticsreset :
        msg := 'taskstatisticsreset             ';
    sh_transactions :
        msg := 'transactions                    ';
    sh_version :
        msg := 'version                         ';
    (* END PTS 1115043 E.Z. *)
    sh_commandcachestatistics :
        msg := 'ommandcachestatistics           ';
    sh_commandcachestatisticsreset :
        msg := 'commandcachestatisticsreset     ';
    sh_commandstatistics :
        msg := 'commandstatistics               ';
    sh_commandstatisticsreset :
        msg := 'commandstatisticsreset          ';
    sh_machineconfiguration :
        msg := 'machineconfiguration            ';
    sh_machineutilization :
        msg := 'machineutilization              ';
    sh_fill3 :
        msg := 'fill3                           ';
    OTHERWISE
        BEGIN
        msg          := 'SKIND=                          ';
        print_number := true
        END
    END;
(*ENDCASE*) 
g17lname_to_line (msg, ln_len, ln);
IF  print_number
THEN
    g17trimint4_to_line (ord (show_kind), ln_len, ln)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      g17access_mode_set (
            access_state : tgg07_StratAccessModSet;
            VAR ln_len   : integer;
            VAR ln       : tsp00_Line);
 
BEGIN
IF  access_state = [ ]
THEN
    g17sname_to_line (' empty      ', ln_len, ln)
ELSE
    BEGIN
    IF  strmod_hash IN access_state
    THEN
        g17sname_to_line (' hash       ', ln_len, ln);
    (*ENDIF*) 
    IF  strmod_parallel IN access_state
    THEN
        g17sname_to_line (' parallel   ', ln_len, ln);
    (*ENDIF*) 
    END
(*ENDIF*) 
END;
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
