home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR36 / BTV200.ZIP / BTVTYPE.PAS < prev    next >
Pascal/Delphi Source File  |  1993-12-18  |  13KB  |  112 lines

  1. (* This file was mangled by Mangler 1.14 (c) Copyright 1993 by Berend de Boer *)
  2.  UNIT BTVTYPE ;{$F-} {$X+} {$A-} {$V-} {$N+,E+} INTERFACE TYPE BDATEREC =RECORD DAY :BYTE ;MONTH :BYTE ;YEAR :WORD ;
  3. END ;BTIMEREC =RECORD HUNDRED :BYTE ;SECOND :BYTE ;MINUTE :BYTE ;HOUR :BYTE ;END ;FUNCTION STRTOINTEGER (S :STRING ;
  4. VAR INT ;SIZE :BYTE ):BOOLEAN ;FUNCTION STRTOUNSIGNED (S :STRING ;VAR INT ;SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTOLSTRING
  5. (S :STRING ;VAR STR );PROCEDURE STRTOZSTRING (S :STRING ;VAR STR );FUNCTION STRTOFLOAT (S :STRING ;VAR FLOAT ;
  6. SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTOSTRING (S :STRING ;VAR STR );FUNCTION STRTOBFLOAT (S :STRING ;VAR BFLOAT ;
  7. SIZE :BYTE ):BOOLEAN ;PROCEDURE STRTONUMERIC (S :STRING ;VAR NUMERIC ;SIZE :BYTE );FUNCTION STRTODECIMAL (S :STRING ;
  8. VAR DECIMAL ;SIZE :BYTE ):BOOLEAN ;FUNCTION LOGICALTOSTR (VAR LOGICAL ;SIZE :BYTE ):STRING ;FUNCTION INTEGERTOSTR
  9. (VAR INT ;SIZE :BYTE ;WIDTH :BYTE ):STRING ;FUNCTION UNSIGNEDTOSTR (VAR INT ;SIZE :BYTE ;WIDTH :BYTE ):STRING ;
  10. FUNCTION LSTRINGTOSTR (VAR STR ):STRING ;FUNCTION ZSTRINGTOSTR (VAR STR ):STRING ;FUNCTION TIMETOSTR (VAR TIME ):STRING ;
  11. FUNCTION DATETOSTR (VAR DATE ):STRING ;FUNCTION FLOATTOSTR (VAR FLOAT ;SIZE :BYTE ;WIDTH :BYTE ;DECIMALS :BYTE ):STRING ;
  12. FUNCTION STRINGTOSTR (VAR STR ;SIZE :BYTE ):STRING ;FUNCTION DECIMALTOSTR (VAR DECIMAL ;SIZE :BYTE ):STRING ;
  13. FUNCTION BFLOATTOSTR (VAR BFLOAT ;SIZE :BYTE ;WIDTH :BYTE ;DECIMALS :BYTE ):STRING ;FUNCTION NUMERICTOSTR (VAR NUMERIC ;
  14. SIZE :BYTE ):STRING ;FUNCTION BFLOATTOSINGLE (VAR BFLOAT ):SINGLE ;PROCEDURE SINGLETOBFLOAT (VAR BFLOAT ;SGL :SINGLE );
  15. FUNCTION BFLOATTODOUBLE (VAR BFLOAT ):DOUBLE ;PROCEDURE DOUBLETOBFLOAT (VAR BFLOAT ;DBL :DOUBLE );
  16. CONST DECIMALPT :CHAR ='.';IMPLEMENTATION TYPE O10OO0O0OOOO1=ARRAY [ 1 .. 256 ]  OF CHAR;O10O0lOlOI00O=ARRAY [ 1 .. 256 ]
  17.  OF BYTE;FUNCTION BFLOATTOSINGLE (VAR BFLOAT):SINGLE ;VAR OOlO1Il0111I:BYTE;O101l010IOIO0:BYTE;OIIOllO1ll0:SINGLE;
  18. OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE OIIOllO1ll0;BEGIN OIIOllO1ll0 := SINGLE (BFLOAT );O101l010IOIO0 := OIl0OOlIlll [ 4 ] ;
  19. IF (O101l010IOIO0 <> 0 )THEN BEGIN OOlO1Il0111I := OIl0OOlIlll [ 3 ] AND $80 ;O101l010IOIO0 := O101l010IOIO0 - $81 + $7F
  20. ;OIl0OOlIlll [ 4 ] := OOlO1Il0111I OR BYTE (O101l010IOIO0 SHR 1 );OIl0OOlIlll [ 3 ] := OIl0OOlIlll [ 3 ] OR BYTE
  21. (O101l010IOIO0 SHL 7 );END ;BFLOATTOSINGLE := OIIOllO1ll0 ;END ;PROCEDURE SINGLETOBFLOAT (VAR BFLOAT;SGL:SINGLE);
  22. VAR OOlO1Il0111I:BYTE;O101l010IOIO0:BYTE;OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE BFLOAT;BEGIN SINGLE (BFLOAT ):= SGL ;
  23. O101l010IOIO0 := BYTE (OIl0OOlIlll [ 4 ] SHL 1 )OR BYTE (OIl0OOlIlll [ 3 ] SHR 7 );IF (O101l010IOIO0 <> 0 )THEN
  24. BEGIN OOlO1Il0111I := OIl0OOlIlll [ 4 ] AND $80 ;O101l010IOIO0 := O101l010IOIO0 - $7F + $81 ;OIl0OOlIlll [ 4 ] :=
  25. O101l010IOIO0 ;OIl0OOlIlll [ 3 ] := OOlO1Il0111I OR OIl0OOlIlll [ 3 ] ;END ;END ;FUNCTION BFLOATTODOUBLE
  26. (VAR BFLOAT):DOUBLE ;VAR OIIOll11O00:ARRAY [ 1 .. 8 ]  OF BYTE;O101l010IOIO0:INTEGER;OIOI1llOl0I:ARRAY [ 1 .. 2 ]
  27.  OF BYTE ABSOLUTE O101l010IOIO0;BEGIN O101l010IOIO0 := O10O0lOlOI00O (BFLOAT )[ 8 ] ;FILLCHAR (OIIOll11O00 , 8 , 0 );IF
  28. (O101l010IOIO0 <> 0 )THEN BEGIN O101l010IOIO0 := O101l010IOIO0 - 129 + 1023 ;OIIOll11O00 [ 8 ] := (O10O0lOlOI00O (BFLOAT
  29. )[ 7 ] AND $80 )+ BYTE (OIOI1llOl0I [ 1 ] SHR 4 )+ BYTE (OIOI1llOl0I [ 2 ] SHL 4 );OIIOll11O00 [ 7 ] := BYTE (OIOI1llOl0I
  30. [ 1 ] SHL 4 )+ BYTE ((O10O0lOlOI00O (BFLOAT )[ 7 ] AND $7F )SHR 3 );OIIOll11O00 [ 6 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 7
  31. ] SHL 5 )+ BYTE (O10O0lOlOI00O (BFLOAT )[ 6 ] SHR 3 );OIIOll11O00 [ 5 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 6 ] SHL 5 )+
  32. BYTE (O10O0lOlOI00O (BFLOAT )[ 5 ] SHR 3 );OIIOll11O00 [ 4 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 5 ] SHL 5 )+ BYTE
  33. (O10O0lOlOI00O (BFLOAT )[ 4 ] SHR 3 );OIIOll11O00 [ 3 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 4 ] SHL 5 )+ BYTE
  34. (O10O0lOlOI00O (BFLOAT )[ 3 ] SHR 3 );OIIOll11O00 [ 2 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 3 ] SHL 5 )+ BYTE
  35. (O10O0lOlOI00O (BFLOAT )[ 2 ] SHR 3 );OIIOll11O00 [ 1 ] := BYTE (O10O0lOlOI00O (BFLOAT )[ 2 ] SHL 5 )+ BYTE
  36. (O10O0lOlOI00O (BFLOAT )[ 1 ] SHR 3 );END ;BFLOATTODOUBLE := DOUBLE (OIIOll11O00 );END ;PROCEDURE DOUBLETOBFLOAT
  37. (VAR BFLOAT;DBL:DOUBLE);VAR O101l010IOIO0:INTEGER;OIl0OOlIlll:O10O0lOlOI00O ABSOLUTE DBL;BEGIN O101l010IOIO0 :=
  38. OIl0OOlIlll [ 8 ] AND $7F ;O101l010IOIO0 := (O101l010IOIO0 SHL 4 )+ (OIl0OOlIlll [ 7 ] SHR 4 );FILLCHAR (O10O0lOlOI00O
  39. (BFLOAT ), 8 , 0 );IF (O101l010IOIO0 <> 0 )THEN BEGIN O101l010IOIO0 := O101l010IOIO0 - 1023 + 129 ;O10O0lOlOI00O (BFLOAT
  40. )[ 8 ] := O101l010IOIO0 ;O10O0lOlOI00O (BFLOAT )[ 7 ] := (OIl0OOlIlll [ 8 ] AND $80 )+ BYTE ((OIl0OOlIlll [ 7 ] AND $0F
  41. )SHL 3 )+ BYTE (OIl0OOlIlll [ 6 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 6 ] := BYTE (OIl0OOlIlll [ 6 ] SHL 3 )+ BYTE
  42. (OIl0OOlIlll [ 5 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 5 ] := BYTE (OIl0OOlIlll [ 5 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 4 ] SHR 5
  43. );O10O0lOlOI00O (BFLOAT )[ 4 ] := BYTE (OIl0OOlIlll [ 4 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 3 ] SHR 5 );O10O0lOlOI00O (BFLOAT
  44. )[ 3 ] := BYTE (OIl0OOlIlll [ 3 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 2 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 2 ] := BYTE
  45. (OIl0OOlIlll [ 2 ] SHL 3 )+ BYTE (OIl0OOlIlll [ 1 ] SHR 5 );O10O0lOlOI00O (BFLOAT )[ 1 ] := BYTE (OIl0OOlIlll [ 1 ] SHL 3
  46. );END ;END ;FUNCTION BFLOATTOSTR (VAR BFLOAT;SIZE:BYTE;WIDTH:BYTE;DECIMALS:BYTE):STRING ;VAR OO1O:STRING ;
  47. BEGIN CASE SIZE  OF 4 :STR (BFLOATTOSINGLE (BFLOAT ):WIDTH :DECIMALS , OO1O );8 :STR (BFLOATTODOUBLE (BFLOAT ):WIDTH
  48. :DECIMALS , OO1O );ELSE OO1O := 'ERROR';END ;BFLOATTOSTR := OO1O ;END ;FUNCTION STRTOBFLOAT (S:STRING ;VAR BFLOAT;
  49. SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;OIIOllO1ll0:SINGLE;OIIOll11O00:DOUBLE;BEGIN CASE SIZE  OF 4 :BEGIN VAL (S ,
  50. OIIOllO1ll0 , OIOl01I00IO );IF (OIOl01I00IO =0 )THEN SINGLETOBFLOAT (BFLOAT , OIIOllO1ll0 );END ;8 :BEGIN VAL (S ,
  51. OIIOll11O00 , OIOl01I00IO );IF (OIOl01I00IO =0 )THEN DOUBLETOBFLOAT (BFLOAT , OIIOll11O00 );END ;END ;STRTOBFLOAT :=
  52. (OIOl01I00IO =0 );END ;FUNCTION INTEGERTOSTR (VAR INT;SIZE:BYTE;WIDTH:BYTE):STRING ;VAR OO1O:STRING [ 30 ] ;
  53. BEGIN CASE SIZE  OF 2 :STR (INTEGER (INT ):WIDTH , OO1O );4 :STR (LONGINT (INT ):WIDTH , OO1O );ELSE OO1O := 'ERROR';
  54. END ;INTEGERTOSTR := OO1O ;END ;FUNCTION STRTOINTEGER (S:STRING ;VAR INT;SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;
  55. BEGIN CASE SIZE  OF 2 :VAL (S , INTEGER (INT ), OIOl01I00IO );4 :VAL (S , LONGINT (INT ), OIOl01I00IO );END ;
  56. STRTOINTEGER := (OIOl01I00IO =0 );END ;FUNCTION UNSIGNEDTOSTR (VAR INT;SIZE:BYTE;WIDTH:BYTE):STRING ;VAR OO1O:STRING [ 30
  57. ] ;BEGIN CASE SIZE  OF 1 :STR (BYTE (INT ):WIDTH , OO1O );2 :STR (WORD (INT ):WIDTH , OO1O );4 :STR (LONGINT (INT ):WIDTH
  58. , OO1O );ELSE OO1O := 'ERROR';END ;UNSIGNEDTOSTR := OO1O ;END ;FUNCTION STRTOUNSIGNED (S:STRING ;VAR INT;
  59. SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;BEGIN CASE SIZE  OF 1 :VAL (S , BYTE (INT ), OIOl01I00IO );2 :VAL (S ,
  60. INTEGER (INT ), OIOl01I00IO );4 :VAL (S , LONGINT (INT ), OIOl01I00IO );END ;STRTOUNSIGNED := (OIOl01I00IO =0 );END ;
  61. FUNCTION LSTRINGTOSTR (VAR STR):STRING ;VAR OO1O:STRING ;BEGIN MOVE (O10OO0O0OOOO1 (STR ), OO1O [ 0 ] , BYTE (STR )+ 1 );
  62. LSTRINGTOSTR := OO1O ;END ;PROCEDURE STRTOLSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 0 ] , STR , BYTE (S [ 0 ] )+ 1 );
  63. END ;FUNCTION ZSTRINGTOSTR (VAR STR):STRING ;VAR OIlO:BYTE;OO1O:STRING ;BEGIN OIlO := 0 ;WHILE (O10OO0O0OOOO1 (STR )[
  64. OIlO + 1 ] <> #0)AND (OIlO < 255 ) DO BEGIN INC (OIlO );OO1O [ OIlO ] := O10OO0O0OOOO1 (STR )[ OIlO ] ;END ;BYTE (OO1O [
  65. 0 ] ):= OIlO ;ZSTRINGTOSTR := OO1O ;END ;PROCEDURE STRTOZSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 1 ] , STR , BYTE (S [
  66. 0 ] ));O10OO0O0OOOO1 (STR )[ BYTE (S [ 0 ] )+ 1 ] := #0;END ;FUNCTION TIMETOSTR (VAR TIME):STRING ;VAR OO1O:STRING [ 30 ]
  67. ;OOIO:STRING [ 2 ] ;OIlO:BYTE;OO1l:BTIMEREC ABSOLUTE TIME;BEGIN STR (OO1l.HOUR :2 , OO1O );OO1O := OO1O + ':';STR
  68. (OO1l.MINUTE :2 , OOIO );OO1O := OO1O + OOIO + ':';STR (OO1l.SECOND :2 , OOIO );OO1O := OO1O + OOIO + ':';STR
  69. (OO1l.HUNDRED :2 , OOIO );OO1O := OO1O + OOIO ;FOR OIlO := 1 TO LENGTH (OO1O ) DO IF OO1O [ OIlO ] =' 'THEN OO1O [ OIlO ]
  70. := '0';TIMETOSTR := OO1O ;END ;FUNCTION DATETOSTR (VAR DATE):STRING ;VAR OO1O:STRING [ 30 ] ;OOIO:STRING [ 4 ] ;
  71. OIlO:BYTE;OIOO:BDATEREC ABSOLUTE DATE;BEGIN STR (OIOO.MONTH :2 , OO1O );OO1O := OO1O + '/';STR (OIOO.DAY :2 , OOIO );
  72. OO1O := OO1O + OOIO + '/';IF (OIOO.YEAR > 100 )THEN STR (OIOO.YEAR :4 , OOIO )ELSE STR (OIOO.YEAR :2 , OOIO );OO1O :=
  73. OO1O + OOIO ;FOR OIlO := 1 TO LENGTH (OO1O ) DO IF OO1O [ OIlO ] =' 'THEN OO1O [ OIlO ] := '0';DATETOSTR := OO1O ;END ;
  74. FUNCTION FLOATTOSTR (VAR FLOAT;SIZE:BYTE;WIDTH:BYTE;DECIMALS:BYTE):STRING ;VAR OO1O:STRING ;BEGIN CASE SIZE  OF 4 :STR
  75. (SINGLE (FLOAT ):WIDTH :DECIMALS , OO1O );8 :STR (DOUBLE (FLOAT ):WIDTH :DECIMALS , OO1O );ELSE OO1O := 'ERROR';END ;
  76. FLOATTOSTR := OO1O ;END ;FUNCTION STRTOFLOAT (S:STRING ;VAR FLOAT;SIZE:BYTE):BOOLEAN ;VAR OIOl01I00IO:INTEGER;
  77. BEGIN CASE SIZE  OF 4 :VAL (S , SINGLE (FLOAT ), OIOl01I00IO );8 :VAL (S , DOUBLE (FLOAT ), OIOl01I00IO );END ;
  78. STRTOFLOAT := (OIOl01I00IO =0 );END ;FUNCTION STRINGTOSTR (VAR STR;SIZE:BYTE):STRING ;VAR OO1O:STRING ;BEGIN IF (SIZE >
  79. 255 )THEN SIZE := 255 ;MOVE (O10OO0O0OOOO1 (STR ), OO1O [ 1 ] , SIZE );BYTE (OO1O [ 0 ] ):= SIZE ;STRINGTOSTR := OO1O ;
  80. END ;PROCEDURE STRTOSTRING (S:STRING ;VAR STR);BEGIN MOVE (S [ 1 ] , STR , LENGTH (S ));END ;FUNCTION DECIMALTOSTR
  81. (VAR DECIMAL;SIZE:BYTE):STRING ;VAR OIOO:O10O0lOlOI00O ABSOLUTE DECIMAL;OOlO1Il0111I:CHAR;OIlO:BYTE;OO1O:STRING ;
  82. BEGIN IF ((OIOO [ SIZE ] AND $0F )=$0D )THEN OOlO1Il0111I := '-'ELSE OOlO1Il0111I := ' ';OIlO := 1 ;OO1O := '';
  83. WHILE (OIlO < SIZE ) DO BEGIN OO1O := OO1O + CHR (((OIOO [ OIlO ] AND $F0 )SHR 4 )+ 48 );OO1O := OO1O + CHR ((OIOO [ OIlO
  84. ] AND $0F )+ 48 );INC (OIlO );END ;OO1O := OO1O + CHR (((OIOO [ SIZE ] AND $F0 )SHR 4 )+ 48 );OIlO := 0 ;WHILE (OIlO <
  85. LENGTH (OO1O ))AND (OO1O [ OIlO + 1 ] ='0') DO INC (OIlO );IF (OIlO > 1 )THEN BEGIN MOVE (OO1O [ OIlO + 1 ] , OO1O [ 1 ]
  86. , LENGTH (OO1O )- OIlO );BYTE (OO1O [ 0 ] ):= LENGTH (OO1O )- OIlO ;END ;IF (OO1O ='')THEN OO1O := '0';IF (OO1O <>
  87. '0')AND (OOlO1Il0111I <> ' ')THEN OO1O := OOlO1Il0111I + OO1O ;DECIMALTOSTR := OO1O ;END ;FUNCTION STRTODECIMAL (S:STRING
  88. ;VAR DECIMAL;SIZE:BYTE):BOOLEAN ;VAR OIOO:O10O0lOlOI00O ABSOLUTE DECIMAL;OIlO:BYTE;OIll:BYTE;OIOl01I00IO:BOOLEAN;
  89. PROCEDURE OlllIO1IIl (OII1I1O00OI:BOOLEAN);BEGIN IF (S [ OIll ] >= '0')AND (S [ OIll ] <= '9')THEN BEGIN IF OII1I1O00OI
  90. THEN OIOO [ OIlO ] := OIOO [ OIlO ] OR ((BYTE (S [ OIll ] )- 48 )SHL 4 )ELSE OIOO [ OIlO ] := OIOO [ OIlO ] OR (BYTE (S [
  91. OIll ] )- 48 );END ELSE IF (S [ OIll ] <> DECIMALPT )THEN BEGIN OIOl01I00IO := TRUE ;END ;END ;BEGIN FILLCHAR (DECIMAL ,
  92. SIZE , 0 );OIOl01I00IO := FALSE ;IF (S [ 1 ] ='-')THEN BEGIN OIOO [ SIZE ] := $0D ;DELETE (S , 1 , 1 );END ELSE
  93. BEGIN OIOO [ SIZE ] := $0C ;END ;OIll := LENGTH (S );OIlO := SIZE ;OlllIO1IIl (TRUE );DEC (OIll );DEC (OIlO );
  94. WHILE (OIlO > 0 )AND (OIll > 0 ) DO BEGIN OlllIO1IIl (FALSE );DEC (OIll );IF (OIll > 0 )THEN BEGIN OlllIO1IIl (TRUE );
  95. DEC (OIll );END ;DEC (OIlO );END ;STRTODECIMAL := OIOl01I00IO ;END ;FUNCTION NUMERICTOSTR (VAR NUMERIC;SIZE:BYTE):STRING
  96. ;VAR OO1O:STRING ;BEGIN MOVE (NUMERIC , OO1O [ 1 ] , SIZE );BYTE (OO1O [ 0 ] ):= SIZE ;CASE OO1O [ SIZE ]  OF 'J'.. 'R',
  97. '}':OO1O := '-'+ OO1O ;END ;CASE OO1O [ LENGTH (OO1O )]  OF 'A', 'J':OO1O [ SIZE ] := '1';'B', 'K':OO1O [ SIZE ] := '2';
  98. 'C', 'L':OO1O [ SIZE ] := '3';'D', 'M':OO1O [ SIZE ] := '4';'E', 'N':OO1O [ SIZE ] := '5';'F', 'O':OO1O [ SIZE ] := '6';
  99. 'G', 'P':OO1O [ SIZE ] := '7';'H', 'Q':OO1O [ SIZE ] := '8';'I', 'R':OO1O [ SIZE ] := '9';'{', '}':OO1O [ SIZE ] := '0';
  100. END ;NUMERICTOSTR := OO1O ;END ;PROCEDURE STRTONUMERIC (S:STRING ;VAR NUMERIC;SIZE:BYTE);VAR OIlO:BYTE;BEGIN CASE S [ 1 ]
  101.  OF '-':BEGIN DELETE (S , 1 , 1 );CASE S [ LENGTH (S )]  OF '1':S [ LENGTH (S )] := 'J';'2':S [ LENGTH (S )] := 'K';
  102. '3':S [ LENGTH (S )] := 'L';'4':S [ LENGTH (S )] := 'M';'5':S [ LENGTH (S )] := 'N';'6':S [ LENGTH (S )] := 'O';'7':S [
  103. LENGTH (S )] := 'P';'8':S [ LENGTH (S )] := 'Q';'9':S [ LENGTH (S )] := 'R';'0':S [ LENGTH (S )] := '}';END ;END ;
  104. '+':BEGIN DELETE (S , 1 , 1 );CASE S [ LENGTH (S )]  OF '1':S [ LENGTH (S )] := 'A';'2':S [ LENGTH (S )] := 'B';'3':S [
  105. LENGTH (S )] := 'C';'4':S [ LENGTH (S )] := 'D';'5':S [ LENGTH (S )] := 'E';'6':S [ LENGTH (S )] := 'F';'7':S [ LENGTH (S
  106. )] := 'G';'8':S [ LENGTH (S )] := 'H';'9':S [ LENGTH (S )] := 'I';'0':S [ LENGTH (S )] := '{';END ;END ;END ;IF (LENGTH
  107. (S )< SIZE )THEN BEGIN FOR OIlO := 1 TO SIZE - LENGTH (S ) DO INSERT ('0', S , 1 );END ;MOVE (S [ 1 ] , NUMERIC , LENGTH
  108. (S ));END ;FUNCTION LOGICALTOSTR (VAR LOGICAL;SIZE:BYTE):STRING ;VAR OIO1:BYTE ABSOLUTE LOGICAL;
  109. OOII:WORD ABSOLUTE LOGICAL;BEGIN IF (SIZE =1 )THEN BEGIN IF (OIO1 =0 )THEN LOGICALTOSTR := 'FALSE'ELSE LOGICALTOSTR :=
  110. 'TRUE 'END ELSE IF (SIZE =2 )THEN BEGIN IF (OOII =0 )THEN LOGICALTOSTR := 'FALSE'ELSE LOGICALTOSTR := 'TRUE 'END ELSE
  111. BEGIN LOGICALTOSTR := 'ERROR';END ;END ;END .
  112.