Longhand.Bas

 BBS: Inland Empire Archive
Date: 09-06-92 (15:27)             Number: 323
From: QUINN TYLER JACKSON          Refer#: NONE
  To: ALL                           Recvd: NO  
Subj: Longhand.Bas                   Conf: (2) Quik_Bas
' Here is a FUNCTION someone may find useful for printing out cheques.
' For example, 234 would come out 'two hundred and thirty four' as
' a longhand string

' Use it in good health!
' Quinn


DECLARE FUNCTION LongHand$ (Number AS INTEGER)
' This little test program includes a useful FUNCTION that will convert
' any integer between -9999 and 9999 into 'longhand'.  The FIRST call to
' this function initializes the DATA array.  Any subsequent call will
' execute more efficiently, since the STATIC declaration will preserve the
' data in the array for later use.
'
' This little ditty released into the Public Domain
' By Quinn Tyler Jackson 06 SEP 92.


' Declare logical constants
CONST TRUE = -1
CONST FALSE = NOT TRUE

' Test Run
' The first call to the function takes a bit longer
PRINT LongHand(-4678)
' than the second.....
PRINT LongHand(9999)

END

' This DATA is required by the function.
LongHandData:
DATA one,two,three,four,five,six,seven,eight,nine,ten
DATA eleven,twelve,thirteen,fourteen,fifteen,sixteen
DATA seventeen,eighteen,nineteen
DATA twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety

DEFINT A-Z
FUNCTION LongHand$ (Number AS INTEGER) STATIC
' Do NOT remove the STATIC declaration if you wish this
' FUNCTION to run at its most efficient

' Only initialize the data array if this is the first time this
' function is called
IF NOT BeenHereBefore THEN
        DIM Num$(27)
        RESTORE LongHandData
        FOR i = 1 TO 27
                READ Num$(i)
        NEXT i
        BeenHereBefore = TRUE
END IF

IF Number < 0 THEN temp$ = "negative "
Number = ABS(Number)


' Thousands position
IF Number >= 1000 THEN
        temp$ = temp$ + Num$(Number \ 1000) + " thousand "
        Number = Number MOD 1000
END IF

' Hundreds position
IF Number >= 100 THEN
        temp$ = temp$ + Num$(Number \ 100) + " hundred "
        Number = Number MOD 100
END IF

' Add the 'and' if necessary
IF Number > 0 AND temp$ <> "" AND LEFT$(temp$, 3) <> "neg" THEN
        temp$ = temp$ + "and "
END IF

' Special tens position
IF Number > 20 THEN
        temp$ = temp$ + Num$(Number \ 10 + 18) + " "
        Number = Number MOD 10
END IF

' Ones positions
IF Number >= 1 AND Number <= 20 THEN
        temp$ = temp$ + Num$(Number)
END IF

LongHand$ = temp$
temp$ = ""
END FUNCTION



... Netmail corrupts, routed netmail corrupts absolutely.
___ Blue Wave/QWK v2.10

--- Maximus/2 2.01wb
 * Origin: The Nibble's Roost, Richmond BC Canada 604-244-8009 (1:153/918)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET