home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
High Voltage Shareware
/
high1.zip
/
high1
/
DIR36
/
BTV200.ZIP
/
BTVTYPE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-12-18
|
13KB
|
112 lines
(* This file was mangled by Mangler 1.14 (c) Copyright 1993 by Berend de Boer *)
UNIT BTVTYPE ;{$F-} {$X+} {$A-} {$V-} {$N+,E+} INTERFACE TYPE BDATEREC =RECORD DAY :BYTE ;MONTH :BYTE ;YEAR :WORD ;
END ;BTIMEREC =RECORD HUNDRED :BYTE ;SECOND :BYTE ;MINUTE :BYTE ;HOUR :BYTE ;END ;FUNCTION STRTOINTEGER (S :STRING ;
VAR INT ;SIZE :BYTE ):BOOLEAN ;FUNCTION STRTOUNSIGNED (S :STRING ;VAR INT ;SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTOLSTRING
(S :STRING ;VAR STR );PROCEDURE STRTOZSTRING (S :STRING ;VAR STR );FUNCTION STRTOFLOAT (S :STRING ;VAR FLOAT ;
SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTOSTRING (S :STRING ;VAR STR );FUNCTION STRTOBFLOAT (S :STRING ;VAR BFLOAT ;
SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTONUMERIC (S :STRING ;VAR NUMERIC ;SIZE :BYTE );FUNCTION STRTODECIMAL (S :STRING ;
VAR DECIMAL ;SIZE :BYTE ):BOOLEAN ;FUNCTION LOGICALTOSTR (VAR LOGICAL ;SIZE :BYTE ):STRING ;FUNCTION INTEGERTOSTR
(VAR INT ;SIZE :BYTE ;WIDTH :BYTE ):STRING ;FUNCTION UNSIGNEDTOSTR (VAR INT ;SIZE :BYTE ;WIDTH :BYTE ):STRING ;
FUNCTION LSTRINGTOSTR (VAR STR ):STRING ;FUNCTION ZSTRINGTOSTR (VAR STR ):STRING ;FUNCTION TIMETOSTR (VAR TIME ):STRING ;
FUNCTION DATETOSTR (VAR DATE ):STRING ;FUNCTION FLOATTOSTR (VAR FLOAT ;SIZE :BYTE ;WIDTH :BYTE ;DECIMALS :BYTE ):STRING ;
FUNCTION STRINGTOSTR (VAR STR ;SIZE :BYTE ):STRING ;FUNCTION DECIMALTOSTR (VAR DECIMAL ;SIZE :BYTE ):STRING ;
FUNCTION BFLOATTOSTR (VAR BFLOAT ;SIZE :BYTE ;WIDTH :BYTE ;DECIMALS :BYTE ):STRING ;FUNCTION NUMERICTOSTR (VAR NUMERIC ;
SIZE :BYTE ):STRING ;FUNCTION BFLOATTOSINGLE (VAR BFLOAT ):SINGLE ;PROCEDURE SINGLETOBFLOAT (VAR BFLOAT ;SGL :SINGLE );
FUNCTION BFLOATTODOUBLE (VAR BFLOAT ):DOUBLE ;PROCEDURE DOUBLETOBFLOAT (VAR BFLOAT ;DBL :DOUBLE );
CONST DECIMALPT :CHAR ='.';IMPLEMENTATION TYPE O10OO0O0OOOO1=ARRAY [ 1 .. 256 ] OF CHAR;O10O0lOlOI00O=ARRAY [ 1 .. 256 ]
OF BYTE;FUNCTION BFLOATTOSINGLE (VAR BFLOAT):SINGLE ;VAR OOlO1Il0111I:BYTE;O101l010IOIO0:BYTE;OIIOllO1ll0:SINGLE;
OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE OIIOllO1ll0;BEGIN OIIOllO1ll0 := SINGLE (BFLOAT );O101l010IOIO0 := OIl0OOlIlll [ 4 ] ;
IF (O101l010IOIO0 <> 0 )THEN BEGIN OOlO1Il0111I := OIl0OOlIlll [ 3 ] AND $80 ;O101l010IOIO0 := O101l010IOIO0 - $81 + $7F
;OIl0OOlIlll [ 4 ] := OOlO1Il0111I OR BYTE (O101l010IOIO0 SHR 1 );OIl0OOlIlll [ 3 ] := OIl0OOlIlll [ 3 ] OR BYTE
(O101l010IOIO0 SHL 7 );END ;BFLOATTOSINGLE := OIIOllO1ll0 ;END ;PROCEDURE SINGLETOBFLOAT (VAR BFLOAT;SGL:SINGLE);
VAR OOlO1Il0111I:BYTE;O101l010IOIO0:BYTE;OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE BFLOAT;BEGIN SINGLE (BFLOAT ):= SGL ;
O101l010IOIO0 := BYTE (OIl0OOlIlll [ 4 ] SHL 1 )OR BYTE (OIl0OOlIlll [ 3 ] SHR 7 );IF (O101l010IOIO0 <> 0 )THEN
BEGIN OOlO1Il0111I := OIl0OOlIlll [ 4 ] AND $80 ;O101l010IOIO0 := O101l010IOIO0 - $7F + $81 ;OIl0OOlIlll [ 4 ] :=
O101l010IOIO0 ;OIl0OOlIlll [ 3 ] := OOlO1Il0111I OR OIl0OOlIlll [ 3 ] ;END ;END ;FUNCTION BFLOATTODOUBLE
(VAR BFLOAT):DOUBLE ;VAR OIIOll11O00:ARRAY [ 1 .. 8 ] OF BYTE;O101l010IOIO0:INTEGER;OIOI1llOl0I:ARRAY [ 1 .. 2 ]
OF BYTE ABSOLUTE O101l010IOIO0;BEGIN O101l010IOIO0 := O10O0lOlOI00O (BFLOAT )[ 8 ] ;FILLCHAR (OIIOll11O00 , 8 , 0 );IF
(O101l010IOIO0 <> 0 )THEN BEGIN O101l010IOIO0 := O101l010IOIO0 - 129 + 1023 ;OIIOll11O00 [ 8 ] := (O10O0lOlOI00O (BFLOAT
)[ 7 ] AND $80 )+ BYTE (OIOI1llOl0I [ 1 ] SHR 4 )+ BYTE (OIOI1llOl0I [ 2 ] SHL 4 );OIIOll11O00 [ 7 ] := BYTE (OIOI1llOl0I
[ 1 ] SHL 4 )+ BYTE ((O10O0lOlOI00O (BFLOAT )[ 7 ] AND $7F )SHR 3 );OIIOll11O00 [ 6 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 7
] SHL 5 )+ BYTE (O10O0lOlOI00O (BFLOAT )[ 6 ] SHR 3 );OIIOll11O00 [ 5 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 6 ] SHL 5 )+
BYTE (O10O0lOlOI00O (BFLOAT )[ 5 ] SHR 3 );OIIOll11O00 [ 4 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 5 ] SHL 5 )+ BYTE
(O10O0lOlOI00O (BFLOAT )[ 4 ] SHR 3 );OIIOll11O00 [ 3 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 4 ] SHL 5 )+ BYTE
(O10O0lOlOI00O (BFLOAT )[ 3 ] SHR 3 );OIIOll11O00 [ 2 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 3 ] SHL 5 )+ BYTE
(O10O0lOlOI00O (BFLOAT )[ 2 ] SHR 3 );OIIOll11O00 [ 1 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 2 ] SHL 5 )+ BYTE
(O10O0lOlOI00O (BFLOAT )[ 1 ] SHR 3 );END ;BFLOATTODOUBLE := DOUBLE (OIIOll11O00 );END ;PROCEDURE DOUBLETOBFLOAT
(VAR BFLOAT;DBL:DOUBLE);VAR O101l010IOIO0:INTEGER;OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE DBL;BEGIN O101l010IOIO0 :=
OIl0OOlIlll [ 8 ] AND $7F ;O101l010IOIO0 := (O101l010IOIO0 SHL 4 )+ (OIl0OOlIlll [ 7 ] SHR 4 );FILLCHAR (O10O0lOlOI00O
(BFLOAT ), 8 , 0 );IF (O101l010IOIO0 <> 0 )THEN BEGIN O101l010IOIO0 := O101l010IOIO0 - 1023 + 129 ;O10O0lOlOI00O (BFLOAT
)[ 8 ] := O101l010IOIO0 ;O10O0lOlOI00O (BFLOAT )[ 7 ] := (OIl0OOlIlll [ 8 ] AND $80 )+ BYTE ((OIl0OOlIlll [ 7 ] AND $0F
)SHL 3 )+ BYTE (OIl0OOlIlll [ 6 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 6 ] := BYTE (OIl0OOlIlll [ 6 ] SHL 3 )+ BYTE
(OIl0OOlIlll [ 5 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 5 ] := BYTE (OIl0OOlIlll [ 5 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 4 ] SHR 5
);O10O0lOlOI00O (BFLOAT )[ 4 ] := BYTE (OIl0OOlIlll [ 4 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 3 ] SHR 5 );O10O0lOlOI00O (BFLOAT
)[ 3 ] := BYTE (OIl0OOlIlll [ 3 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 2 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 2 ] := BYTE
(OIl0OOlIlll [ 2 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 1 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 1 ] := BYTE (OIl0OOlIlll [ 1 ] SHL 3
);END ;END ;FUNCTION BFLOATTOSTR (VAR BFLOAT;SIZE:BYTE;WIDTH:BYTE;DECIMALS:BYTE):STRING ;VAR OO1O:STRING ;
BEGIN CASE SIZE OF 4 :STR (BFLOATTOSINGLE (BFLOAT ):WIDTH :DECIMALS , OO1O );8 :STR (BFLOATTODOUBLE (BFLOAT ):WIDTH
:DECIMALS , OO1O );ELSE OO1O := 'ERROR';END ;BFLOATTOSTR := OO1O ;END ;FUNCTION STRTOBFLOAT (S:STRING ;VAR BFLOAT;
SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;OIIOllO1ll0:SINGLE;OIIOll11O00:DOUBLE;BEGIN CASE SIZE OF 4 :BEGIN VAL (S ,
OIIOllO1ll0 , OIOl01I00IO );IF (OIOl01I00IO =0 )THEN SINGLETOBFLOAT (BFLOAT , OIIOllO1ll0 );END ;8 :BEGIN VAL (S ,
OIIOll11O00 , OIOl01I00IO );IF (OIOl01I00IO =0 )THEN DOUBLETOBFLOAT (BFLOAT , OIIOll11O00 );END ;END ;STRTOBFLOAT :=
(OIOl01I00IO =0 );END ;FUNCTION INTEGERTOSTR (VAR INT;SIZE:BYTE;WIDTH:BYTE):STRING ;VAR OO1O:STRING [ 30 ] ;
BEGIN CASE SIZE OF 2 :STR (INTEGER (INT ):WIDTH , OO1O );4 :STR (LONGINT (INT ):WIDTH , OO1O );ELSE OO1O := 'ERROR';
END ;INTEGERTOSTR := OO1O ;END ;FUNCTION STRTOINTEGER (S:STRING ;VAR INT;SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;
BEGIN CASE SIZE OF 2 :VAL (S , INTEGER (INT ), OIOl01I00IO );4 :VAL (S , LONGINT (INT ), OIOl01I00IO );END ;
STRTOINTEGER := (OIOl01I00IO =0 );END ;FUNCTION UNSIGNEDTOSTR (VAR INT;SIZE:BYTE;WIDTH:BYTE):STRING ;VAR OO1O:STRING [ 30
] ;BEGIN CASE SIZE OF 1 :STR (BYTE (INT ):WIDTH , OO1O );2 :STR (WORD (INT ):WIDTH , OO1O );4 :STR (LONGINT (INT ):WIDTH
, OO1O );ELSE OO1O := 'ERROR';END ;UNSIGNEDTOSTR := OO1O ;END ;FUNCTION STRTOUNSIGNED (S:STRING ;VAR INT;
SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;BEGIN CASE SIZE OF 1 :VAL (S , BYTE (INT ), OIOl01I00IO );2 :VAL (S ,
INTEGER (INT ), OIOl01I00IO );4 :VAL (S , LONGINT (INT ), OIOl01I00IO );END ;STRTOUNSIGNED := (OIOl01I00IO =0 );END ;
FUNCTION LSTRINGTOSTR (VAR STR):STRING ;VAR OO1O:STRING ;BEGIN MOVE (O10OO0O0OOOO1 (STR ), OO1O [ 0 ] , BYTE (STR )+ 1 );
LSTRINGTOSTR := OO1O ;END ;PROCEDURE STRTOLSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 0 ] , STR , BYTE (S [ 0 ] )+ 1 );
END ;FUNCTION ZSTRINGTOSTR (VAR STR):STRING ;VAR OIlO:BYTE;OO1O:STRING ;BEGIN OIlO := 0 ;WHILE (O10OO0O0OOOO1 (STR )[
OIlO + 1 ] <> #0)AND (OIlO < 255 ) DO BEGIN INC (OIlO );OO1O [ OIlO ] := O10OO0O0OOOO1 (STR )[ OIlO ] ;END ;BYTE (OO1O [
0 ] ):= OIlO ;ZSTRINGTOSTR := OO1O ;END ;PROCEDURE STRTOZSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 1 ] , STR , BYTE (S [
0 ] ));O10OO0O0OOOO1 (STR )[ BYTE (S [ 0 ] )+ 1 ] := #0;END ;FUNCTION TIMETOSTR (VAR TIME):STRING ;VAR OO1O:STRING [ 30 ]
;OOIO:STRING [ 2 ] ;OIlO:BYTE;OO1l:BTIMEREC ABSOLUTE TIME;BEGIN STR (OO1l.HOUR :2 , OO1O );OO1O := OO1O + ':';STR
(OO1l.MINUTE :2 , OOIO );OO1O := OO1O + OOIO + ':';STR (OO1l.SECOND :2 , OOIO );OO1O := OO1O + OOIO + ':';STR
(OO1l.HUNDRED :2 , OOIO );OO1O := OO1O + OOIO ;FOR OIlO := 1 TO LENGTH (OO1O ) DO IF OO1O [ OIlO ] =' 'THEN OO1O [ OIlO ]
:= '0';TIMETOSTR := OO1O ;END ;FUNCTION DATETOSTR (VAR DATE):STRING ;VAR OO1O:STRING [ 30 ] ;OOIO:STRING [ 4 ] ;
OIlO:BYTE;OIOO:BDATEREC ABSOLUTE DATE;BEGIN STR (OIOO.MONTH :2 , OO1O );OO1O := OO1O + '/';STR (OIOO.DAY :2 , OOIO );
OO1O := OO1O + OOIO + '/';IF (OIOO.YEAR > 100 )THEN STR (OIOO.YEAR :4 , OOIO )ELSE STR (OIOO.YEAR :2 , OOIO );OO1O :=
OO1O + OOIO ;FOR OIlO := 1 TO LENGTH (OO1O ) DO IF OO1O [ OIlO ] =' 'THEN OO1O [ OIlO ] := '0';DATETOSTR := OO1O ;END ;
FUNCTION FLOATTOSTR (VAR FLOAT;SIZE:BYTE;WIDTH:BYTE;DECIMALS:BYTE):STRING ;VAR OO1O:STRING ;BEGIN CASE SIZE OF 4 :STR
(SINGLE (FLOAT ):WIDTH :DECIMALS , OO1O );8 :STR (DOUBLE (FLOAT ):WIDTH :DECIMALS , OO1O );ELSE OO1O := 'ERROR';END ;
FLOATTOSTR := OO1O ;END ;FUNCTION STRTOFLOAT (S:STRING ;VAR FLOAT;SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;
BEGIN CASE SIZE OF 4 :VAL (S , SINGLE (FLOAT ), OIOl01I00IO );8 :VAL (S , DOUBLE (FLOAT ), OIOl01I00IO );END ;
STRTOFLOAT := (OIOl01I00IO =0 );END ;FUNCTION STRINGTOSTR (VAR STR;SIZE:BYTE):STRING ;VAR OO1O:STRING ;BEGIN IF (SIZE >
255 )THEN SIZE := 255 ;MOVE (O10OO0O0OOOO1 (STR ), OO1O [ 1 ] , SIZE );BYTE (OO1O [ 0 ] ):= SIZE ;STRINGTOSTR := OO1O ;
END ;PROCEDURE STRTOSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 1 ] , STR , LENGTH (S ));END ;FUNCTION DECIMALTOSTR
(VAR DECIMAL;SIZE:BYTE):STRING ;VAR OIOO:O10O0lOlOI00O ABSOLUTE DECIMAL;OOlO1Il0111I:CHAR;OIlO:BYTE;OO1O:STRING ;
BEGIN IF ((OIOO [ SIZE ] AND $0F )=$0D )THEN OOlO1Il0111I := '-'ELSE OOlO1Il0111I := ' ';OIlO := 1 ;OO1O := '';
WHILE (OIlO < SIZE ) DO BEGIN OO1O := OO1O + CHR (((OIOO [ OIlO ] AND $F0 )SHR 4 )+ 48 );OO1O := OO1O + CHR ((OIOO [ OIlO
] AND $0F )+ 48 );INC (OIlO );END ;OO1O := OO1O + CHR (((OIOO [ SIZE ] AND $F0 )SHR 4 )+ 48 );OIlO := 0 ;WHILE (OIlO <
LENGTH (OO1O ))AND (OO1O [ OIlO + 1 ] ='0') DO INC (OIlO );IF (OIlO > 1 )THEN BEGIN MOVE (OO1O [ OIlO + 1 ] , OO1O [ 1 ]
, LENGTH (OO1O )- OIlO );BYTE (OO1O [ 0 ] ):= LENGTH (OO1O )- OIlO ;END ;IF (OO1O ='')THEN OO1O := '0';IF (OO1O <>
'0')AND (OOlO1Il0111I <> ' ')THEN OO1O := OOlO1Il0111I + OO1O ;DECIMALTOSTR := OO1O ;END ;FUNCTION STRTODECIMAL (S:STRING
;VAR DECIMAL;SIZE:BYTE):BOOLEAN ;VAR OIOO:O10O0lOlOI00O ABSOLUTE DECIMAL;OIlO:BYTE;OIll:BYTE;OIOl01I00IO:BOOLEAN;
PROCEDURE OlllIO1IIl (OII1I1O00OI:BOOLEAN);BEGIN IF (S [ OIll ] >= '0')AND (S [ OIll ] <= '9')THEN BEGIN IF OII1I1O00OI
THEN OIOO [ OIlO ] := OIOO [ OIlO ] OR ((BYTE (S [ OIll ] )- 48 )SHL 4 )ELSE OIOO [ OIlO ] := OIOO [ OIlO ] OR (BYTE (S [
OIll ] )- 48 );END ELSE IF (S [ OIll ] <> DECIMALPT )THEN BEGIN OIOl01I00IO := TRUE ;END ;END ;BEGIN FILLCHAR (DECIMAL ,
SIZE , 0 );OIOl01I00IO := FALSE ;IF (S [ 1 ] ='-')THEN BEGIN OIOO [ SIZE ] := $0D ;DELETE (S , 1 , 1 );END ELSE
BEGIN OIOO [ SIZE ] := $0C ;END ;OIll := LENGTH (S );OIlO := SIZE ;OlllIO1IIl (TRUE );DEC (OIll );DEC (OIlO );
WHILE (OIlO > 0 )AND (OIll > 0 ) DO BEGIN OlllIO1IIl (FALSE );DEC (OIll );IF (OIll > 0 )THEN BEGIN OlllIO1IIl (TRUE );
DEC (OIll );END ;DEC (OIlO );END ;STRTODECIMAL := OIOl01I00IO ;END ;FUNCTION NUMERICTOSTR (VAR NUMERIC;SIZE:BYTE):STRING
;VAR OO1O:STRING ;BEGIN MOVE (NUMERIC , OO1O [ 1 ] , SIZE );BYTE (OO1O [ 0 ] ):= SIZE ;CASE OO1O [ SIZE ] OF 'J'.. 'R',
'}':OO1O := '-'+ OO1O ;END ;CASE OO1O [ LENGTH (OO1O )] OF 'A', 'J':OO1O [ SIZE ] := '1';'B', 'K':OO1O [ SIZE ] := '2';
'C', 'L':OO1O [ SIZE ] := '3';'D', 'M':OO1O [ SIZE ] := '4';'E', 'N':OO1O [ SIZE ] := '5';'F', 'O':OO1O [ SIZE ] := '6';
'G', 'P':OO1O [ SIZE ] := '7';'H', 'Q':OO1O [ SIZE ] := '8';'I', 'R':OO1O [ SIZE ] := '9';'{', '}':OO1O [ SIZE ] := '0';
END ;NUMERICTOSTR := OO1O ;END ;PROCEDURE STRTONUMERIC (S:STRING ;VAR NUMERIC;SIZE:BYTE);VAR OIlO:BYTE;BEGIN CASE S [ 1 ]
OF '-':BEGIN DELETE (S , 1 , 1 );CASE S [ LENGTH (S )] OF '1':S [ LENGTH (S )] := 'J';'2':S [ LENGTH (S )] := 'K';
'3':S [ LENGTH (S )] := 'L';'4':S [ LENGTH (S )] := 'M';'5':S [ LENGTH (S )] := 'N';'6':S [ LENGTH (S )] := 'O';'7':S [
LENGTH (S )] := 'P';'8':S [ LENGTH (S )] := 'Q';'9':S [ LENGTH (S )] := 'R';'0':S [ LENGTH (S )] := '}';END ;END ;
'+':BEGIN DELETE (S , 1 , 1 );CASE S [ LENGTH (S )] OF '1':S [ LENGTH (S )] := 'A';'2':S [ LENGTH (S )] := 'B';'3':S [
LENGTH (S )] := 'C';'4':S [ LENGTH (S )] := 'D';'5':S [ LENGTH (S )] := 'E';'6':S [ LENGTH (S )] := 'F';'7':S [ LENGTH (S
)] := 'G';'8':S [ LENGTH (S )] := 'H';'9':S [ LENGTH (S )] := 'I';'0':S [ LENGTH (S )] := '{';END ;END ;END ;IF (LENGTH
(S )< SIZE )THEN BEGIN FOR OIlO := 1 TO SIZE - LENGTH (S ) DO INSERT ('0', S , 1 );END ;MOVE (S [ 1 ] , NUMERIC , LENGTH
(S ));END ;FUNCTION LOGICALTOSTR (VAR LOGICAL;SIZE:BYTE):STRING ;VAR OIO1:BYTE ABSOLUTE LOGICAL;
OOII:WORD ABSOLUTE LOGICAL;BEGIN IF (SIZE =1 )THEN BEGIN IF (OIO1 =0 )THEN LOGICALTOSTR := 'FALSE'ELSE LOGICALTOSTR :=
'TRUE 'END ELSE IF (SIZE =2 )THEN BEGIN IF (OOII =0 )THEN LOGICALTOSTR := 'FALSE'ELSE LOGICALTOSTR := 'TRUE 'END ELSE
BEGIN LOGICALTOSTR := 'ERROR';END ;END ;END .