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

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

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

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

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

 
.fo
 
 
.fo
.nf
.sp
MODULE  : displayable_lines
=========
.sp
Purpose : initialization of the map table; mapping
          of non-displayable characters to question marks
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :
 
        PROCEDURE
              i30cinit (
                    VAR map_codes : tsp00_Ctable);
 
        FUNCTION
              i30mapped (
                    VAR map_codes : tsp00_Ctable;
                    VAR source    : tsp00_MoveObj;
                    VAR dest      : tsp00_MoveObj;
                    len           : integer) : boolean;
 
        FUNCTION
              in3030 : tsp00_Int4;
 
.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
 
        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
              s10mv (
                    source_upb  : tsp00_Int4;       
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;    
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;    
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
      ------------------------------ 
 
        FROM
              RTE-Extension-30 : VSP30;
 
        PROCEDURE
              s30map (VAR map_codes : tsp00_Ctable;
                    VAR source : tsp00_MoveObj;
                    spos       : tsp00_Int4;
                    VAR dest   : tsp00_MoveObj;
                    dpos       : tsp00_Int4;
                    length     : tsp00_Int4);
 
        FUNCTION
              s30eq (VAR a : tsp00_MoveObj;
                    VAR b  : tsp00_MoveObj;
                    b_pos  : tsp00_Int4;
                    length : tsp00_Int4) : boolean;
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
        PROCEDURE
              s30map;
 
              tsp00_MoveObj tsp00_Ctable
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  :
.sp
.cp 3
Created : 1985-01-04
.sp
.cp 3
.sp
.cp 3
Release :  6.1.2     Date : 1995-11-01
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:
 
.sp
.CM *-END-* specification -------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
 
 
.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    :
 
 
(*------------------------------*) 
 
FUNCTION
      in3030 : tsp00_Int4;
 
BEGIN
(* linkcheck function *)
in3030 := 219020414;
END;
 
&IF $OS in [ MSDOS, OS2, WIN32 ]
(*------------------------------*) 
 
PROCEDURE
      i30cinit (VAR map_codes : tsp00_Ctable);
 
CONST
      noprint_char = '?';
 
VAR
      i : integer;
 
BEGIN
FOR i := 0 TO ord(bsp_c1)-1 DO
    map_codes [i+1 ] := noprint_char;
(*ENDFOR*) 
FOR i := ord(bsp_c1) TO 255 DO
    map_codes [i+1 ] := chr(i);
(*ENDFOR*) 
END; (* i30_cinit *)
 
&ELSE
(*------------------------------*) 
 
PROCEDURE
      i30cinit (VAR map_codes : tsp00_Ctable);
&     IF $OS = UNIX
 
CONST
      (*
      EBCDIC : druckbare Zeichen
      *)
      ebcdic_1 =
            '\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00';
      ebcdic_2 =
            ebcdic_1;
      ebcdic_3 =
            ebcdic_1;
      ebcdic_4 =
            ebcdic_1;
      ebcdic_5 =
            '\40\00\42\00\00\00\00\00\48\00\4A\4B\4C\4D\4E\4F';
      ebcdic_6 =
            '\50\00\52\00\00\00\00\00\00\00\5A\5B\5C\5D\5E\5F';
      ebcdic_7 =
            '\60\61\62\00\00\00\00\00\68\00\6A\6B\6C\6D\6E\6F';
      ebcdic_8 =
            '\00\71\00\00\00\00\00\00\00\79\7A\7B\7C\7D\7E\7F';
      ebcdic_9 =
            '\00\81\82\83\84\85\86\87\88\89\00\00\00\00\00\00';
      ebcdic_10 =
            '\00\91\92\93\94\95\96\97\98\99\00\00\00\00\00\00';
      ebcdic_11 =
            '\00\A1\A2\A3\A4\A5\A6\A7\A8\A9\00\00\00\00\00\00';
      ebcdic_12 =
            ebcdic_1;
      ebcdic_13 =
            '\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\00\CB\CC\00\CE\00';
      ebcdic_14 =
            '\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\00\DB\DC\00\00\00';
      ebcdic_15 =
            '\E0\00\E2\E3\E4\E5\E6\E7\E8\E9\00\00\EC\00\00\00';
      ebcdic_16 =
            '\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\00\00\FC\FD\00\00';
      (*
      ASCII : druckbare Zeichen in Hex-Darstellung
      *)
      ascii_1 =
            '\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00';
      ascii_2 =
            ascii_1;
      ascii_3 =
            '\20\21\22\23\24\25\26\27\28\29\2A\2B\2C\2D\2E\2F';
      ascii_4 =
            '\30\31\32\33\34\35\36\37\38\39\3A\3B\3C\3D\3E\3F';
      ascii_5 =
            '\40\41\42\43\44\45\46\47\48\49\4A\4B\4C\4D\4E\4F';
      ascii_6 =
            '\50\51\52\53\54\55\56\57\58\59\5A\5B\5C\5D\5E\5F';
      ascii_7 =
            '\60\61\62\63\64\65\66\67\68\69\6A\6B\6C\6D\6E\6F';
      ascii_8 =
            '\70\71\72\73\74\75\76\77\78\79\7A\7B\7C\7D\7E\00';
      ascii_9 =
            ascii_1;
      ascii_10 =
            ascii_1;
      ascii_11 =
            '\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF';
      ascii_12 =
            '\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF';
      ascii_13 =
            '\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF';
      ascii_14 =
            '\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF';
      ascii_15 =
            '\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF';
      ascii_16 =
            '\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\FA\FB\FC\FD\FE\FF';
&     ELSE
 
CONST
      (*
      EBCDIC : druckbare Zeichen
      *)
      ebcdic_1 =
            '00000000000000000000000000000000'xc;
      ebcdic_2 =
            ebcdic_1;
      ebcdic_3 =
            ebcdic_1;
      ebcdic_4 =
            ebcdic_1;
      ebcdic_5 =
            '400042000000000048004A4B4C4D4E4F'xc;
      ebcdic_6 =
            '500052000000000000005A5B5C5D5E5F'xc;
      ebcdic_7 =
            '606162000000000068006A6B6C6D6E6F'xc;
      ebcdic_8 =
            '007100000000000000797A7B7C7D7E7F'xc;
      ebcdic_9 =
            '00818283848586878889000000000000'xc;
      ebcdic_10 =
            '00919293949596979899000000000000'xc;
      ebcdic_11 =
            '00A1A2A3A4A5A6A7A8A9000000000000'xc;
      ebcdic_12 =
            ebcdic_1;
      ebcdic_13 =
            'C0C1C2C3C4C5C6C7C8C900CBCC00CE00'xc;
      ebcdic_14 =
            'D0D1D2D3D4D5D6D7D8D900DBDC000000'xc;
      ebcdic_15 =
            'E000E2E3E4E5E6E7E8E90000EC000000'xc;
      ebcdic_16 =
            'F0F1F2F3F4F5F6F7F8F90000FCFD0000'xc;
      (*
      ASCII : druckbare Zeichen in Hex-Darstellung
      *)
      ascii_1 =
            '00000000000000000000000000000000'xc;
      ascii_2 =
            ascii_1;
      ascii_3 =
            '202122232425262728292A2B2C2D2E2F'xc;
      ascii_4 =
            '303132333435363738393A3B3C3D3E3F'xc;
      ascii_5 =
            '404142434445464748494A4B4C4D4E4F'xc;
      ascii_6 =
            '505152535455565758595A5B5C5D5E5F'xc;
      ascii_7 =
            '606162636465666768696A6B6C6D6E6F'xc;
      ascii_8 =
            '707172737475767778797A7B7C7D7E00'xc;
      ascii_9 =
            ascii_1;
      ascii_10 =
            ascii_1;
      ascii_11 =
            'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'xc;
      ascii_12 =
            'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'xc;
      ascii_13 =
            'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'xc;
      ascii_14 =
            'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'xc;
      ascii_15 =
            'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'xc;
      ascii_16 =
            'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'xc;
&     ENDIF
      code_portion_length = 16;
      code_portion_number = 16;
      noprint_char = '?';
 
VAR
      code_count    : 1..CTABLE_MXSP00;
      portion_count : 1..code_portion_number;
      prtchar_n     : tsp00_C16;
      help          : tsp00_Ctable;
      i             : integer;
 
BEGIN
code_count:=1;
FOR portion_count := 1 TO code_portion_number DO
    BEGIN
    IF  ord(' ') = 32
    THEN
        CASE portion_count OF
            1:
                prtchar_n:=ascii_1;
            2:
                prtchar_n:=ascii_2;
            3:
                prtchar_n:=ascii_3;
            4:
                prtchar_n:=ascii_4;
            5:
                prtchar_n:=ascii_5;
            6:
                prtchar_n:=ascii_6;
            7:
                prtchar_n:=ascii_7;
            8:
                prtchar_n:=ascii_8;
            9:
                prtchar_n:=ascii_9;
            10:
                prtchar_n:=ascii_10;
            11:
                prtchar_n:=ascii_11;
            12:
                prtchar_n:=ascii_12;
            13:
                prtchar_n:=ascii_13;
            14:
                prtchar_n:=ascii_14;
            15:
                prtchar_n:=ascii_15;
            16:
                prtchar_n:=ascii_16;
            END
        (*ENDCASE*) 
    ELSE
        CASE portion_count OF
            1:
                prtchar_n:=ebcdic_1;
            2:
                prtchar_n:=ebcdic_2;
            3:
                prtchar_n:=ebcdic_3;
            4:
                prtchar_n:=ebcdic_4;
            5:
                prtchar_n:=ebcdic_5;
            6:
                prtchar_n:=ebcdic_6;
            7:
                prtchar_n:=ebcdic_7;
            8:
                prtchar_n:=ebcdic_8;
            9:
                prtchar_n:=ebcdic_9;
            10:
                prtchar_n:=ebcdic_10;
            11:
                prtchar_n:=ebcdic_11;
            12:
                prtchar_n:=ebcdic_12;
            13:
                prtchar_n:=ebcdic_13;
            14:
                prtchar_n:=ebcdic_14;
            15:
                prtchar_n:=ebcdic_15;
            16:
                prtchar_n:=ebcdic_16;
            END;
        (*ENDCASE*) 
    (*ENDIF*) 
    s10mv(16,CTABLE_MXSP00,
          @prtchar_n,1,
          @map_codes,code_count,code_portion_length);
    IF  portion_count < code_portion_number
    THEN
        code_count := code_count+code_portion_length;
    (*ENDIF*) 
    END;
(*ENDFOR*) 
map_codes  [1]  := noprint_char;
help := map_codes;
FOR i := 1 TO CTABLE_MXSP00 DO
    help [i] := map_codes [ord (help [i]) + 1];
(*ENDFOR*) 
map_codes := help;
END; (* i30_cinit *)
 
&ENDIF
(*------------------------------*) 
 
FUNCTION
      i30mapped (
            VAR map_codes : tsp00_Ctable;
            VAR source    : tsp00_MoveObj;
            VAR dest      : tsp00_MoveObj;
            len           : integer) : boolean;
 
BEGIN
s30map (map_codes, source, 1, dest, 1, len);
i30mapped := NOT s30eq (source, dest, 1, len);
END; (* i30mapped *)
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
