'===========================================================================
' Subject: PREFIX CONVERSION TABLE            Date: 04-29-97 (17:57)       
'  Author: Aaron Koehl                        Code: QB, QBasic, PDS        
'  Origin: akoehl@ccsinc.com                Packet: MISC.ABC
'===========================================================================
'                    RELEASED TO PUBLIC DOMAIN 4-29-97
'                        Scenix Designs Incorporated
'                      Aaron Koehl - akoehl@ccsinc.com
'+----+------+------+------+------+------+------+------+------+------+----+
' Abbr2Wrd$ FUNCTION
'     Converts SI abbreviations (ie. k, M, æ) to standard form:
'       Number$    - Data to convert        <800k>  ]Ä¿
'       Action     - Customize action       <1>       Ã <800 kilobytes>
'       DataType$  - Word(s) to add to end  <bytes> ]ÄÙ
'+----+------+------+------+------+------+------+------+------+------+----+

DECLARE FUNCTION Abbr2Wrd$ (Number$, Action, DataType$)
DECLARE SUB Center (Text$)

SCREEN 0: CLS
COLOR 15, 0
Center "Prefix Conversion Table DEMO"
Center "By Aaron M. Koehl"
COLOR 14: PRINT STRING$(34, 196); : PRINT "'Q' to quit"; :
PRINT STRING$(35, 196): COLOR 15: PRINT
VIEW PRINT 4 TO 25

'+------+------+------+------+------+------+------+------+------+------+
DataType$ = "bytes"     ' Leave blank for simple conv.
Action = 1              ' <1> Convert Abbrevs. to full form

DO
   COLOR 15: PRINT "Input data in form: (.77p)--> "; : COLOR 14
   INPUT "", A$: IF UCASE$(A$) = "Q" THEN EXIT DO
   COLOR 10: PRINT "Program Output: "; : COLOR 14
   PRINT Abbr2Wrd$(A$, Action, DataType$): PRINT
LOOP
PRINT : PRINT : PRINT
Center "PUBLIC DOMAIN"
Center "Scenix Designs Incorporated"
Center "Aaron Koehl - akoehl@ccsinc.com"
END

PrefixData:
DATA E,P,T,G,M,k,h,da,d,c,m,æ,n,p,f,a
DATA exa,peta,tera,giga,mega,kilo,hecto,deka,deci,centi,milli
DATA micro,nano,pico,femto,atto


FUNCTION Abbr2Wrd$ (Number$, Action, DataType$)

'         PUBLIC DOMAIN
'   Scenix Designs Incorporated
' Aaron Koehl - akoehl@ccsinc.com

SELECT CASE Action
   CASE 1   ' Convert abbreviations to whole words
      RESTORE PrefixData
      REDIM Temp$(16): FOR Temp = 1 TO 16: READ Temp$(Temp): NEXT
      REDIM Temp2$(16): FOR Temp = 1 TO 16: READ Temp2$(Temp): NEXT
      FOR Temp = 1 TO 16
         IF INSTR(Number$, Temp$(Temp)) THEN
            Temp3$ = MID$(Number$, 1, INSTR(Number$, Temp$(Temp)) - 1)
            Temp4$ = MID$(Number$, INSTR(Number$, Temp$(Temp)) + LEN(Temp$(Temp)))
            Number$ = Temp3$ + " " + Temp4$ + Temp2$(Temp)
            Flag = 1: Abbr2Wrd$ = Number$ + DataType$
            EXIT FUNCTION
         END IF
         'IF Flag THEN EXIT FOR
      NEXT
END SELECT
END FUNCTION

SUB Center (Text$)
LOCATE CSRLIN, (80 - LEN(Text$)) \ 2
PRINT Text$
END SUB
